平均250msで私のデュアルコア、3 GHz Intelプロセッサで動作するアルゴリズムがあり、それを最適化しようとしています。現在、std::nth_element
コールは、std::vector
で約6,000回呼び出され、150〜300要素の平均50msを要します。私は現在、ベクトルから2つのdouble
を検索し、単純な<
の比較を行う、私が使用するコンパレータを最適化するのに少し時間を費やしました。コンパレータは、実行する時間のほんのわずかです。std::nth_element
。コンパレータのコピーコンストラクタもシンプルです。SIMD実装のstd :: nth_element
このコールは現在アルゴリズムの時間の20%を費やしているので、私が書き込んでいない(つまりコンパレータではない)nth_element
のコードではほとんど時間が費やされているので、誰かが知っていればSIMDまたは他の方法を使用してnth_element
を最適化する方法を教えてください。私は、OpenCLと複数のスレッドを使用してstd::nth_element
を並列化することでsome questionsを見たことがありますが、ベクトルがかなり短いので、私は間違っていると言われていますが、
SSEアプローチがある場合は、SSE4.2までのSSE命令を使用することができます。
ありがとうございます!
いくつかのコードを投稿できますか?あなたは何を最適化しようとしていますか? –
@BЈови_私は_something_を投稿できますが、どのように役立つかわかりません。私は数千行のコードを持っており、すべてを最適化しようとしています。これはビジョンアルゴリズムです。何をご覧になりたいですか? – anjruu
ええ、ここでもう少し文脈が必要です。あなたは二倍の小さいベクトルの束を持っています、あなたは何らかの理由でそれらをソートしようとしていますか?あなたの究極の目標は何ですか? –