Skip to content

nishibu97/python-speed-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python の処理速度の検証

Python に加えて C++または C を使用して、処理速度を向上させます。

時間が掛かる処理としてフィボナッチ数列の計算をさせます。

F_0=0
F_1=1
F_n=F_n−1+F_n−2 (n
ge2)

まず、Python で以下のアプローチを試します。

  1. 再帰関数(シンプルな実装だが非効率) fibonacci_recursive.py

  2. 動的計画法(メモ化再帰) fibonacci_memoization.py

  3. 動的計画法(ボトムアップ、ループ処理) fibonacci_iterative.py

  4. ジェネレータ(効率的に数列を生成) fibonacci_generator.py

環境構築手順

  1. 前提条件:

    • Docker がインストールされていること
    • VS Code の Remote - Containers 拡張機能がインストールされていること
  2. リポジトリのクローン:

    git clone https://github.com/<GitHubユーザー名>/python-speed-benchmark.git
    cd python-speed-benchmark
  3. Dev Container の起動:

    • VS Code で「Remote-Containers: Open Folder in Container...」を実行し、プロジェクトフォルダを選択します。
    • .devcontainer/Dockerfileのベースイメージが python:3.12-bookworm になっていることを確認してください。
  4. 依存関係のインストール:

    pip install -r requirements.txt
  5. ベンチマークの実行:

    python src/main.py

ディレクトリ構成

python_speed_benchmark/
├── .devcontainer/                    # VS Code Dev Containers 設定 (任意)
│   └── devcontainer.json
│   └── Dockerfile                   # Dev Containers 用 Dockerfile (もし本番と分けるなら)
├── docker-compose.yml              # Docker Compose ファイル
├── Dockerfile                      # Python 環境構築用 Dockerfile
├── requirements.txt                # Python の依存関係
├── scripts/                        # 検証スクリプトやユーティリティ
│   ├── run_benchmarks.sh           # 全体のベンチマーク実行スクリプト
│   └── profile_memory.py           # メモリプロファイリング用スクリプト (任意)
├── src/
│   ├── python_native/              # 純粋なPython実装
│   │   ├── __init__.py
│   │   └── fibonacci.py            # フィボナッチ数列ロジック
│   └── cpp_module/                 # C++拡張モジュール
│       ├── setup.py                # Pythonモジュールとしてビルドするためのセットアップスクリプト
│       ├── src/                    # C++ソースファイル
│       │   ├── __init__.py         # (空でも可、モジュールとして認識させるため)
│       │   └── cpp_logic.cpp       # C++サンプルロジック実装
│       │   └── cpp_logic.hpp       # C++ヘッダファイル (必要であれば)
│       └── CMakeLists.txt          # CMake を使う場合のビルド設定 (pybind11の場合など)
├── benchmarks/
│   ├── benchmark_runner.py         # 各ロジックを呼び出すベンチマーク実行コード
│   ├── benchmark_config.py         # ベンチマーク設定 (データサイズ、試行回数など)
│   └── results/                    # ベンチマーク結果出力ディレクトリ
│       └── benchmark_results.csv   # 結果例
├── .gitignore                      # Git の無視ファイル
├── README.md                       # プロジェクトの説明

実行結果

root@c569b4e706bf:/app/src# python main.py
フィボナッチ数列の何番目を計算しますか? (推奨: 30以下) > 35
フィボナッチ数列の計算 (n=35):

Python再帰関数 (n=35):
Python再帰関数 - 時間: 3.080696秒
CPU使用率: 平均 97.65%, 最大 104.30%
メモリ使用量: 平均 14.38MB, 最大 14.38MB
結果: 9227465

C++再帰関数 (n=35):
C++再帰関数 - 時間: 0.046243秒
CPU使用率: 平均 34.00%, 最大 34.00%
メモリ使用量: 平均 14.50MB, 最大 14.50MB
結果: 9227465

処理速度ランキング:
==================================================
順位   アルゴリズム              実行時間           CPU平均          メモリ平均
--------------------------------------------------
1    C++再帰関数             0.046243秒34.00%14.50MB
2    Python再帰関数          3.080696秒97.65%14.38MB
--------------------------------------------------
最速の C++再帰関数 は最遅の Python再帰関数 より 66.62倍 高速です
==================================================

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors