ページ 1 / 1
処理が遅いです>_<
Posted: 2010年12月02日(木) 18:30
by あま
昨日crypt関数のことで質問させていただきましたが、それを基にトリップ検索のツールを作成しました。
が、処理が遅いです・・・
検索時間があまりにも長いのでマルチスレッドで検索するようにしたのですが、多少早くなったくらいです。
処理速度を上げる方法を教えてください。
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 18:31
by あま
ソースをアップして見ていただきたいのですが・・・
アップロード機能はないのでしょうか?
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 18:38
by softya(ソフト屋)
記入するときの下の方にオプション/ファイル添付がありますのでお使いください。
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 18:40
by あま
□BBCode を無効にする
□URL を自動的にパースしない
□解決!
チェックボックスがこれしかないのですが>_<
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 19:01
by softya(ソフト屋)
すいません。mixC++加入メンバーしか使えない機能みたいです。
この場合何処かのアップローダを使っていただくとか、mixC++にメンバー加入してもらうしか無い様です。
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 19:20
by あま
登録してきましたw
ソース見てください。
実行ファイルも一緒に入れといたので実行してみてください。
- Trip.zip
- ソース汚いです>_<
- (51.15 KiB) ダウンロード数: 171 回
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 19:54
by softya(ソフト屋)
ざっと見た感想を言うと、CPUがほぼ全力でぶん回りますのでCPUコア数を超えるスレッドを使うとかえって速度が低下すると思います。
それとまめに表示するのは、時間の無駄なので出来るだけ表示する割合を減らしてください。
stdoutで時間をロスしていると思います。
最後に、char *word = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&'()=~|`{+*}<>?_-^\\@[;:],./。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚0";
の違いだけみたいなので自動的に生成してやれば1つの関数で復数スレッドを起こす形に出来てスッキリできると思います。
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 20:22
by あま
softya(ソフト屋) さんが書きました:ざっと見た感想を言うと、CPUがほぼ全力でぶん回りますのでCPUコア数を超えるスレッドを使うとかえって速度が低下すると思います。
それとまめに表示するのは、時間の無駄なので出来るだけ表示する割合を減らしてください。
stdoutで時間をロスしていると思います。
最後に、char *word = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\"#$%&'()=~|`{+*}<>?_-^\\@[;:],./。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚0";
の違いだけみたいなので自動的に生成してやれば1つの関数で復数スレッドを起こす形に出来てスッキリできると思います。
なるほど。ということは、スレッド数を減らしてprintf("%s\\r",inputs);を消せばもう少し早くなるということでしょうか?
一般的にスレッド処理をするとしたらどのくらいの数が妥当なのでしょうか?
複数のスレッドを一つの関数で出来るのですか!?
Re: 処理が遅いです>_<
Posted: 2010年12月02日(木) 21:01
by softya(ソフト屋)
あま さんが書きました:[
なるほど。ということは、スレッド数を減らしてprintf("%s\\r",inputs);を消せばもう少し早くなるということでしょうか?
一般的にスレッド処理をするとしたらどのくらいの数が妥当なのでしょうか?
表示を減らせば早くなります。
最適なスレッドの数はCPUのコア数とCPU使用率で決まります。
なのでCPU全力でぶん回す(使う)場合で、1コアのCPUならスレッドを使わないほうが速いです。
あま さんが書きました:[
複数のスレッドを一つの関数で出来るのですか!?
それぞれのスレッドで書き換える変数が独立していればよいので、ローカル変数しか使わないとかスレッド別の配列とかを用意すれば大丈夫です。
Re: 処理が遅いです>_<
Posted: 2010年12月03日(金) 16:32
by toyo
むかし「うとりっぱー」というトリップ検索ソフトのソースが公開されてました
crypt関数のコア部分を逆アセンブルしてMMX命令で手を加えたということで少し早くなっているようです
元はgcc(gas)用だったのでそれをVisualC++(MASM)用にしたのがあります
参考にどうぞ
Re: 処理が遅いです>_<
Posted: 2010年12月06日(月) 15:42
by あま
返信送れてすみまんせん。
なんとかサマになってきました。
ありがとうございました。