![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
仕事上、膨大データ処理を行っており、その処理に一度の処理に何十分も掛かり困ってます。
OSはWindows7でCPUはCore5、メモリ4GBの環境でも何せこれだけの膨大データなので。
その方法としてインメモリというメモリに対象データを格納してHDDを介さず高速データ処理が可能な技術もあるそうですが、どうやらそれは個人向けの技術ではなさそうですね。
ですが膨大データ処理を行ってる以上、高速処理を実現させる必要があり、できれば個人でもインメモリを実現させたいです、またインメモリに代わる高速処理の方法があれば教えて下さい。
A 回答 (25件中21~25件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
膨大なデータとおっしゃっているのでメモリーに載り切らないぐらいのデータを扱っているのかと思いきや、たった200MBですか。
そのデータ処理のアルゴリズムが悪いだけではないでしょうか。Windows7の実装は詳しく知りませんが、メモリーの容量(4GB)の20分の1程度のデータなら一度読んだら全部メモリーに載ってます。初回読む場合でもシーケンシャルアクセスであればOSが先読みしてくれて、ディスクI/Oのためにプログラムが長時間停止するということはまず無いと思います。
どうしても、メモリーにデータを読み込んでディスクI/Oをせずに処理すれば高速になるとしか思えないなら、ファイルを読むだけのプログラムを書いて時間を測ってみたらいかがでしょうか。
あなたが行っているその膨大なデータの処理が何の言語で書かれていて、具体的にどういうことをしているのかを知らずして、これ以上のことは語れませんが、あなたのプログラムのデータ量あたりの時間計算量のオーダーを計算してみてはいかがでしょうか。
その言語処理系の標準ライブラリーなどを駆使してできないかまず考えましょう。大抵はあなたが考えたアルゴリズムよりもずっと良い方法でライブラリーが処理してくれることでしょう。
この回答への補足
回答ありがとうございます。
皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。
自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。
おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。
なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。
しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。
ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。
今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。
No.4
- 回答日時:
IT業界とは無縁の者です。
少しばかりVBA、C、Javaが書ける素人ですが・・・。商社の一万人規模のソフト部門やNECが作成したオフコンの某データ処理プログラムの所要時間が90秒でした。ところが、私が作成した全く同じ処理プログラムの所要時間は、僅かに0.001秒。CPU=35MZというPCでも、このような高速化を実現できました。
>メモリに対象データを格納してHDDを介さず・・・
こういう高度な処理は、ズブの素人の私にできる芸当ではありません。可能なのは、高速化のアイデアを捻ることのみ。
・一体どうしたら、ファイルアクセスを高速化できるのか?
・一体どうしたら、データの検索・比較というプロセスを追放できるのか?
商社やNEC等が作成したアプリケーションの共通項は、ファイルアクセスの遅さとデータの検索・比較処理の存在でした。それを忠実にPCで実現したら一件当たりの処理時間は25分でした。これで、<所要時間が90秒>というのが相当な高速処理だと知ることができました。「ゲーッ!」と困り果てた私は、「待てよ!」と。そこで、ファイルアクセスの高速化について調査。加えて、データの検索・比較というプロセスの追放の可能性を考察。結果、僅かに0.001秒という高速化に成功しました。
やったことは、誰でも可能なそれです。Cの低レベルのファイルアクセスを利用する。加えて、データの検索・比較を追放するに足る設計の構造体変数にデータを代入しBSave()関数で保存。処理によって呼び出すべき変数を定義したパターンマッチファイルを用意して、それに基づきBLoad()で構造体変数を読み込む。たった、これだけのことです。
さて、こういう話を交わすには、使用言語が明らかであること。データ構造が明らかであること。処理内容が明らかであること。かと、思います。
以上の3つは補足されたが良いと思います。
この回答への補足
回答ありがとうございます。
皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。
自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。
おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。
なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。
しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。
ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。
今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。
No.3
- 回答日時:
何がボトルネックとなって時間がかかっているのか、が不明では、対策も答えようがありません。
・メインメモリは、意識しなくても勝手に使われています。
個人向けとかそうでないとかは関係ありません。
100GB超のメモリを積んで、となると、個人向けとは言えないかもしれませんが。
・ファイルの読み書きに時間が掛っているのなら、一旦メモリに読み込んで、メモリ内のアクセス中心にして、ファイルアクセスを減らすことで速度向上が期待できます。
が、計算そのものに時間が掛っているのなら、読み書きはそれほど影響しません。
・タスクマネージャー等で確認したときに、CPUコア毎の負荷が特定のコアに集中しているようなら、それを各コアに分散して並列に処理することで、高速できる可能性があります。
ただ、順番に処理しないとならない場合は、並列化の恩恵はあまりありません。
・他にも、画面表示とかイベント待ちとか、いろんな原因があります。
例えば、その処理がExcelのマクロなら、次の方法で画面表示変更を止めるだけで、劇的に早くなります。
https://sites.google.com/site/compositiosystemae …
この回答への補足
回答ありがとうございます。
皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。
自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。
おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。
なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。
しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。
ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。
今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。
No.2
- 回答日時:
同じく処理データの種類やデータ量等をお知らせください。
最近の普通のノートパソコンでは64bit OSで8GB主記憶程度迄は拡張できるようです。
パソコンの仕様を確認して下さい。
4GBの増設メモリが5000円前後で入手出来るようです。
その他には現状のプログラムでディスクアクセスの制限が無ければどの程度まで高速化出来る予定でしょうか。
タスクマネージャのCPU使用率等はどのようになっているでしょうか。
USB接続或いはSerial ATA接続のSSDにディスクのデータを移されるのも良いのではないでしょうか。
128GB-512GBで2-7万円程度のようです。
http://kakaku.com/pc/ssd/itemlist.aspx?pdf_Spec3 …
もちろんプログラムも変更してインメモリ処理されるのが一番良いとは思われますが、データ量や予算等次第でしょうね。
この回答への補足
回答ありがとうございます。
皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。
自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。
おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。
なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。
しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。
ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。
今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) 高速処理可能な表計算ソフトについて ExcelやGoogleスプレッドシートのような表計算ソフトで、 2 2023/04/29 16:06
- デスクトップパソコン 仕事で使うPC 10 2023/04/23 00:27
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Excel(エクセル) エクセルデータ。容量を減らすにはどうしたらいい? 11 2022/12/22 09:01
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Visual Basic(VBA) エクセル 2つの列にある値の完全一致を抜き出すVBA 15 2022/12/15 03:22
- CPU・メモリ・マザーボード メモリでのデータの処理についての質問です。 1 2023/05/04 23:53
- BTOパソコン PCの選び方 6 2022/09/11 00:16
- IT・エンジニアリング 不具合の現状認識をしないプログラマって信用できる人? できない人? 8 2023/07/28 09:09
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
絶対パスの取得について
-
小数点を含む数値かどうか判断...
-
Excel(VBA)でSetTimer関数を使...
-
Excelでのセル内容の高速消去方法
-
SQLの速度をあげるには・・・
-
DoEvents関数って何?
-
Typescript が必要な理由
-
Do~Loopステートメント
-
WebBrowserの読み込み待ちの処...
-
再帰処理について
-
WindowsMessage(ウィンドウメッ...
-
C言語:関数を使うメリットとデ...
-
Excel VBA での処理時間計測結...
-
Excel2000 セルに設定された計...
-
コンピュータ言語で繰り返し処...
-
VBS でプログラムを先頭から再試行
-
音程とテンポを独立して変化さ...
-
switch-case文の効率について
-
VC++2010 GDIオブジェクトの解...
-
ユーザプログラム処理で留意す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelでのセル内容の高速消去方法
-
DoEvents関数って何?
-
win10で、正確な待ち時間の作り方
-
小数点を含む数値かどうか判断...
-
Excel VBAにて、2GB超の点群デ...
-
SQLの速度をあげるには・・・
-
絶対パスの取得について
-
WebBrowserの読み込み待ちの処...
-
プログラム上のCPU稼働率低減に...
-
C言語 再帰処理のメリットとデ...
-
テキストファイルの空行をスキ...
-
実行時のCPU使用率を増やしたい
-
C言語 時刻差分の算出方法
-
Excel VBA データ削除の高速化
-
VBでの簡易電卓の作成(減算方...
-
Excel(VBA)でSetTimer関数を使...
-
プログラミングの授業でPython...
-
If Not c Is Nothing Then ~延...
-
C言語で、文字とか入力されなく...
-
C言語:関数を使うメリットとデ...
おすすめ情報