• 締切済み

膨大データ処理を高速化したい

仕事上、膨大データ処理を行っており、その処理に一度の処理に何十分も掛かり困ってます。 OSはWindows7でCPUはCore5、メモリ4GBの環境でも何せこれだけの膨大データなので。 その方法としてインメモリというメモリに対象データを格納してHDDを介さず高速データ処理が可能な技術もあるそうですが、どうやらそれは個人向けの技術ではなさそうですね。 ですが膨大データ処理を行ってる以上、高速処理を実現させる必要があり、できれば個人でもインメモリを実現させたいです、またインメモリに代わる高速処理の方法があれば教えて下さい。

みんなの回答

回答No.5

膨大なデータとおっしゃっているのでメモリーに載り切らないぐらいのデータを扱っているのかと思いきや、たった200MBですか。そのデータ処理のアルゴリズムが悪いだけではないでしょうか。 Windows7の実装は詳しく知りませんが、メモリーの容量(4GB)の20分の1程度のデータなら一度読んだら全部メモリーに載ってます。初回読む場合でもシーケンシャルアクセスであればOSが先読みしてくれて、ディスクI/Oのためにプログラムが長時間停止するということはまず無いと思います。 どうしても、メモリーにデータを読み込んでディスクI/Oをせずに処理すれば高速になるとしか思えないなら、ファイルを読むだけのプログラムを書いて時間を測ってみたらいかがでしょうか。 あなたが行っているその膨大なデータの処理が何の言語で書かれていて、具体的にどういうことをしているのかを知らずして、これ以上のことは語れませんが、あなたのプログラムのデータ量あたりの時間計算量のオーダーを計算してみてはいかがでしょうか。 その言語処理系の標準ライブラリーなどを駆使してできないかまず考えましょう。大抵はあなたが考えたアルゴリズムよりもずっと良い方法でライブラリーが処理してくれることでしょう。

cs4f18df
質問者

補足

回答ありがとうございます。 皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。 自分のやってる処理は、あるソフトウェアで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つは補足されたが良いと思います。

cs4f18df
質問者

補足

回答ありがとうございます。 皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。 自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。 おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。 なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。 しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。 ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。 今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

何がボトルネックとなって時間がかかっているのか、が不明では、対策も答えようがありません。 ・メインメモリは、意識しなくても勝手に使われています。 個人向けとかそうでないとかは関係ありません。 100GB超のメモリを積んで、となると、個人向けとは言えないかもしれませんが。 ・ファイルの読み書きに時間が掛っているのなら、一旦メモリに読み込んで、メモリ内のアクセス中心にして、ファイルアクセスを減らすことで速度向上が期待できます。 が、計算そのものに時間が掛っているのなら、読み書きはそれほど影響しません。 ・タスクマネージャー等で確認したときに、CPUコア毎の負荷が特定のコアに集中しているようなら、それを各コアに分散して並列に処理することで、高速できる可能性があります。 ただ、順番に処理しないとならない場合は、並列化の恩恵はあまりありません。 ・他にも、画面表示とかイベント待ちとか、いろんな原因があります。 例えば、その処理がExcelのマクロなら、次の方法で画面表示変更を止めるだけで、劇的に早くなります。 https://sites.google.com/site/compositiosystemae/home/vbaworld/primitive/exp1/stopredrow

cs4f18df
質問者

補足

回答ありがとうございます。 皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。 自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。 おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。 なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。 しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。 ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。 今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.2

同じく処理データの種類やデータ量等をお知らせください。 最近の普通のノートパソコンでは64bit OSで8GB主記憶程度迄は拡張できるようです。 パソコンの仕様を確認して下さい。 4GBの増設メモリが5000円前後で入手出来るようです。 その他には現状のプログラムでディスクアクセスの制限が無ければどの程度まで高速化出来る予定でしょうか。 タスクマネージャのCPU使用率等はどのようになっているでしょうか。 USB接続或いはSerial ATA接続のSSDにディスクのデータを移されるのも良いのではないでしょうか。 128GB-512GBで2-7万円程度のようです。 http://kakaku.com/pc/ssd/itemlist.aspx?pdf_Spec301=128-256 もちろんプログラムも変更してインメモリ処理されるのが一番良いとは思われますが、データ量や予算等次第でしょうね。

cs4f18df
質問者

補足

回答ありがとうございます。 皆様のご意見を参照する以前に、以下説明をする必要がある事に気付きました。 自分のやってる処理は、あるソフトウェアでC言語に似た独自の言語でプログラミングしたスクリプトを稼働させテキスト処理を行うものです。 おそらくそのソフトに処理を高速化する為の機能は特にないと思います、インメモリの設定もできないと思います。 なのでソフトに頼らず自分のスクリプトオンリーで処理するなら、皆様のご回答通りの解決策ができるかもしれませんが、作業上、このソフトを使う事が必要不可欠です。 しかも、そのソフトが古くマルチコア非対応なので、CPUをCore7にする等、どんなに処理スピードに優れたCPUを用いてもスピードアップはほとんど期待できないらしいです。 ですが、処理に時間を喰ってる事が作業のネックになってるのが現状で、こういう状況でも処理を速くできる方法はないか知りたく質問させて戴いた次第です。 今思いつく解決方法はスクリプトを効率的に書き直し、処理数をなるべく少なめにして目的の処理ができる事をするしかないと思います。

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

膨大と書かれている量がよくわかりません。しかも形式もわかりません。画像なのか、動画なのか、テキストなのかです。 これらがわからなければ答えることができません。

cs4f18df
質問者

補足

説明不足で済みません。 データはテキストで形式はTXT、容量は200MBくらいです。 それを一行一行読込んでいくので時間が掛かります。 改めて宜しくお願いします。

関連するQ&A

  • どのパソコンが、大量のデータ処理に向いていますか?

    今度、新しいデスクトップパソコンを購入します。 目的は、「膨大な量のデータを処理すること」です。 で、新旧のパソコンのスペックは次の通りです。 ◇旧パソコン・・・CPU 2.93GHz    メモリ 0.99GB  HDD 320GB ◇新パソコン・・・CPU 2.66GHz     メモリ 4GB   HDD 1TB 処理するのは、全て、数字データです。 どちらが、膨大な数字データの処理に向いていますか? 「CPUが大きいパソコンとメモリが大きいパソコン、どれが向いているのか?」と、迷っています。

  • VBAで高速にデータを処理するコツを教えてください

    いつもお世話になっております。 VBAのことで教えて欲しいことがあります。 EXCEL2000 VBAであるデータを処理するコードを作っています。 データ数は1万行×5列×6シート=30万です。 処理する際のパラメータの違いから、この30万個のデータをfor文を使って繰り返し処理します。 繰り返し回数は20万回です。 一回の処理に1秒かかるとすると1秒×20万回なので、2~3日かかります。 このデータを処理する速度の向上を考えています。 L1キャッシュ→L2キャッシュ→メインメモリ→HDD の順に処理速度(アクセス速度?)が遅くなると調べて分かりました。 30万個のデータを配列(メインメモリ?)に格納する方法は下記のようにすればいいと分かりました。 Dim myData as Variant myData = Worksheets("myData").range("A1:E10000") myDataから1行1列目のデータを取り出すのはmyData(1,1)でできると言うことも分かりました。 そこで質問です。 1.コードの記述により、メインメモリよりも高速なL1キャッシュ、L2キャッシュを意識して使うことはできるのでしょうか。 処理している間ずっと30万個のデータをL1,L2キャッシュに格納しておけば、メインメモリに格納しておくよりも高速に処理ができると単純に考えました。 2.私のPCはVista、Core2Quad Q9450、4GB DRAMです。 VBAでは4つのコアをすべて使って実行すること(CPU使用率100%)はできないと聞きました。 上記の処理を実行する時、1つのコアで処理させるのがいいのか、複数のコアで処理させるのがいいのか、プロセスの優先度はどうすべきか、など、コードの記述以外の方法で処理速度を上げる方法はあるのでしょうか。 3.処理速度を向上させるコツなどありますでしょうか。 4.VBA以外の言語なら4つのコアをフルパワーで使えるよ、というのがありましたら教えてください。 (C言語はそれに該当するというのは聞きました。) よろしくお願いいたします。

  • ネットワークを用いたPC処理高速化

    ネットワークを用いて、他のPCのCPUやメモリを間借りし処理を高速化する技術、サービスはありますか?もし存在するなら利用したいです。 そもそも技術的に可能ですか?

  • CPUが同じならばXPのほうが高速処理?

    ・CPUが インテル(R) Core(TM) 2 Duo プロセッサー E6750 (4MB L2 キャッシュ、2.66GHz、1333MHz FSB) ・メモリーが 2GB(1GB x2) デュアルチャネル DDR2-SDRAMメモリ で同じならば OSはVistaよりXPを選んだほうがより高速処理になるのでしょうか? Vistaですとメモリーは1GBが推奨ですが、XPで512MBです、ですから単純に考えるとXPではより高品質なメモリーを搭載した事になり、高速処理になるのでしょうか? よって、あえてXPを選ぶという手もありでしょうか?

  • PCの高速化とHDDについて

    質問は二つあります。 一つ目は、ちょっとスペックの高いPCを一週間前ぐらいに買ったのですが、だんだんレスポンス等が遅くなってのが気になり始めました。 いろいろなHPを見ていても、低スペック向けの高速化などしか載ってないので、ちょっとハイスペックなPCにできる高速化の方法を教えてください。 特にメモリが4GBあるので、それをフルに使いたいなと思っているのですが… 二つ目は、HDDの増設についてです。 PCは「ガリレアJD」を使っているのですが、下のほうに3.5インチのスペースが一つありそこに増設をしようと思っています。 そこで思ったのですが、HDDの温度は大丈夫でしょうか? 一つの時のHDDの温度は45度ほどです。二つも重ねて入れても大丈夫なのでしょうか? PCのスペックも書いておきます。 [ケース]ガリレアJD [OS]Windows Vista [CPU]Core2 Duo E8400 [メモリ]4GB よろしくお願いします。

  • ノートパソコンの処理速度を早くするには?

    NECのVersa Pro VY16AW-1を中古で購入しました。 メモリは1GBですが、HDDは40GBしかありません。 内蔵HDDを交換すると、処理速度は上がるのでしょうか? ちなみにCPUはCore Duo1,66GBで、会計ソフトが使用目的です。

  • macの処理速度を上げたい

    グラフィックデザインの仕事をしています。 データの重いPhotoshop(700MB~2GBほど)や、Illustratorのデータを扱う際に、 よくPCがフリーズしたり、保存に時間(20分程)がかかったりするので、 なんとか、macのパフォーマンスを改善したいと考えています。 しかし、メモリを上げるべきなのか、CPUをグレードアップするべきなのか、 そもそもCPUは交換できるものなのか、それとも買い換えるべきなのか… 最適な方法がわからず困っています。 ▼今使っているmacの環境です。 本体:iMac CPU:3.06GHz Intel Core 2 Duo メモリ:4GB 1067 MHz DDR3(2GB×2) そこで、質問なのですが、 (1)PhotoshopやIllustratorの処理速度に大きく関わるのは、 CPUですか?メモリですか?それとも別のものですか? (2)MacのCPUの交換について検索したところ、 交換できないかもしれない、認識されない、などの記事を見かけました。 CPUの交換にはリスクがあるのかなぁと感じています。 もしCPUの交換をするのなら、いっそ最新のCorei7搭載のmacに買いかえた方が賢い選択でしょうか? (3)HDDからSSDに交換するのは、効果がありますか? (4)CPUやメモリ、HDD・SSDの違いは測定して数字として表すことは可能ですか? というのも、CPUやメモリをグレードアップすれば、どのくらいスピードが上がるかというのを、上司に説明して納得してもらう必要あるので、体感的な感想ではなく、数値で説明できるような資料があればなと思っています。そいうのが掲載されているサイトってあるんでしょうか? 以上です。 わかる方いらっしゃいましたら、ご回答頂けますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • 高速処理の方法

    Ultrabook UH55/HのSSD高速処理は普通にOSをHDDにインストールでこうすく処理が自動的に行うのですか、高速処理のための設定方法等がありましたらご案内ください。

  • CPUとメモリの働き 画像処理に適したPC

    CPUとメモリの働き 画像処理に適したPC Photoshopやイラストレーターを使って画像処理をしたいのですが、 core i3でメモリー16GBのPCと Celeron G540でメモリー32GBのPC、どちらが適しているでしょうか。 どちらも64bitOSです。 CPUはi3>Celeron で メモリは 16GB<32GBです。 また、CPUの働き、メモリの働き(それぞれを変えると何が変わるか)を 教えてください。

  • 画像処理に特化したPCはどんな構成でしょうか?

    一眼デジタルの現像(印刷ではなく画像処理)の早いPCはどんな構成のPCでしょうか? rawファイル(一枚25~30Mbyte)くらいです。 現在はCPU CORE2 DUO6700    メモリ 3G    HDD   7200回転 3.5インチ    OS   XP SP2 です。 使っている感じでは結構遅くて、反映に時間がかかります。 HDDのアクセス時間が足を引っ張っているように思います。 まったく新しいPCを買うとして(自作可能)とすると、 HDDをSDDにする以外に何か高速化する方法はあるでしょうか? またハードとは別に使い方として、 RAM上のみで処理するようなことは可能でしょうか? ほかにも早くする方法があれば教えてほしいです。 処理する画像は