Python に加えて C++または C を使用して、処理速度を向上させます。
時間が掛かる処理としてフィボナッチ数列の計算をさせます。
F_0=0
F_1=1
F_n=F_n−1+F_n−2 (n
ge2)まず、Python で以下のアプローチを試します。
-
再帰関数(シンプルな実装だが非効率) fibonacci_recursive.py
-
動的計画法(メモ化再帰) fibonacci_memoization.py
-
動的計画法(ボトムアップ、ループ処理) fibonacci_iterative.py
-
ジェネレータ(効率的に数列を生成) fibonacci_generator.py
-
前提条件:
- Docker がインストールされていること
- VS Code の Remote - Containers 拡張機能がインストールされていること
-
リポジトリのクローン:
git clone https://github.com/<GitHubユーザー名>/python-speed-benchmark.git cd python-speed-benchmark
-
Dev Container の起動:
- VS Code で「Remote-Containers: Open Folder in Container...」を実行し、プロジェクトフォルダを選択します。
.devcontainer/Dockerfileのベースイメージがpython:3.12-bookwormになっていることを確認してください。
-
依存関係のインストール:
pip install -r requirements.txt
-
ベンチマークの実行:
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倍 高速です
==================================================