投稿者:陸 投稿日:2021/01/30(Sat) 10:47:11 No.2626
お世話になります。
現在、ファイルのハッシュ値を計算して、同一ファイルを探すツールを作っています。
この際、1GB前後の大きなファイルのハッシュ値を計算することがあるのですが、下記2点で困っています。
1.環境によってはメモリ不足のエラーが表示されてしまう。
2.計算に時間がかかる都合上、計算中プログラムがフリーズしたような感じになってしまう。
後者に関してはスレッドを使えばなんとかなるのかもしれませんが、前者に関してはよい対処法が思いつきません。
何かよい方法はないでしょうか。
欲を言えば、非同期で計算して、計算状況をプログレスバーか何かで表示できるようになるといいのですが。
以上、よろしくお願いいたします。
投稿者:ゆうと 投稿日:2021/02/17(Wed) 01:04:44 No.2628
こんにちは ゆうとです。
> 1.環境によってはメモリ不足のエラーが表示されてしまう。
ハッシュ値計算で1GBのファイルを指定することを想定していませんでした。
1.7.1048では、ハッシュ値を「ファイルから計算する」手順で計算する場合に
メモリオーバーとならないように修正しました。
> 2.計算に時間がかかる都合上、計算中プログラムがフリーズしたような感じになってしまう。
結果が返るのに時間が掛かる場合には、スレッドを利用すると、画面のフリーズを防止できます。
プログレスバーは表示されませんが代わりにカーソルを変える、アニメーションを付けるなどの
対処はできるかと思います。
-----------------
メイン画面を表示する
待機する
メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり
初期化する手順
ーー自動生成された手順です。
ーーここにプログラムを書き加えても消える場合があります。
この実質大きさを{428,247}に変える
この内容を「メイン画面」に変える
初期化開始する
ボタン1というボタンを作る
その位置と大きさを{157,143,112,34}に変える
その内容を「ボタン1」に変える
その移動順を1に変える
テキスト1というテキストを作る
その位置と大きさを{46,79,342,25}に変える
初期化終了する
この設計スケール比率を{144,144}に変える
終わり
ボタン1がクリックされた時の手順
スレッドAというスレッドを作る
スレッドAで『
テキスト1の内容は、「(計算中)」
「大きいファイル」というファイルからSHA256ハッシュ値を計算して結果とする
テキスト1の内容は、結果
』を実行する
終わり
終わり
-----------------
参考にしてください。
投稿者:陸 投稿日:2021/02/17(Wed) 06:16:35 No.2629
お世話になっております。
対応ありがとうございます。
とりあえず、今のところ大丈夫そうです。
また、プログレスバーは表示できないとのことで、こちらも了解しました。
スレッドを使うようにいたします。
以上、今後ともよろしくお願いいたします。
- WebForum -