1

C での基本的な実装に対して、C++ と Python の標準ライブラリ (キューとヒープ) の間で簡単なパフォーマンス テストを行いました。これが私が使用したものです。

  • Python 2.7.5 :: アナコンダ 1.7.0 (x86_64)
  • i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1
  • ソートする要素は int です。

キュー構築セグメントでのパフォーマンスの違いについては驚くことではありません (要素の配列からソートされたヒープを作成することを意味します)。

ここに画像の説明を入力

ここに奇妙なことがあります。何か不足しているかどうかわかりません... なぜ C++ は要素の抽出に時間がかかるのですか? これは、C++ でプライオリティ キューを構築する適切な方法ですか?

ここに画像の説明を入力

私の実装はPythonでは次のようになります

# Construct the queue
heapq.heapify(int_values)

# Extract element
heapq.heappop(int_values)

C++ の場合:

// Construct the queue
std::priority_queue<int, std::vector<int>, std::greater<int> > mypq (int_values, int_values+elements);

// Extract element
mypq.pop();

完全な C++ コードと、時間を測定する方法を次に示します。 https://gist.github.com/srodrb/6916802

Python コードは次のとおりです: https://gist.github.com/srodrb/6917081

編集: C++ コードを最適化するふりをしていないことに注意してください。標準ライブラリのツールをすぐにテストしているため、この比較は有効です。私はその巨大なパフォーマンスのギャップについてだけ疑問に思っています。また、おそらく heapq がいくつかの C 関数を呼び出すため、C++ と Python を対比していません。

4

1 に答える 1