2016-05-02 13 views
1

私は、Windows/Linux上で約300k製品(それぞれ70種類のカテゴリ)の区切りテキストデータベースを解析するアプリケーションを作成しました。アプリケーションの目的は、提供された2つのテキストファイル(ftpとローカル/現在のもの)を比較し、ローカルのものに変更を加えて更新することです(個々の製品フィールドの更新、製品の追加または削除)。これらの変更のログ。問題はベクトル<ベクトル<string>>セットアップ

質問:2次元ベクトルより効率的な方法がありますか?おそらく地図やペアのベクトルがより効率的でしょうか?基本的に比較は製品ごとに、カテゴリごとに行ごとに行われます。両方のリストで一致するエントリが見つかった場合、そのレコードは両方で一致していることを確認するためにチェックされます(そうでなければ更新されます)。一致するエントリが見つからない場合、欠落している製品はローカルリストから削除されるか、ローカルリストがftpに存在する)。

これらすべての検索と新しいメンバーの削除/追加(順序は関係ありませんので、追加はローカルの2dベクトルの最後にプッシュバックされます)は、アプリケーションのパフォーマンスに影響を与えているようです私はこれについてもっと効率的な方法があるのだろうかと思っていました。

注:注文は重要ではないため、二重入力は許可されず、ローカルベクターは同じ区切り形式を使用してテキストファイルに書き戻されます。バックエンドPHPアプリケーションでは、このタイプのテキスト/区切り形式が必要です。

ありがとうございました。

+2

データベースの仕事のように見えます。多分NoSQLのものです。 –

+0

最初に 'std :: vector :: reserve()'を呼び出すと、とりわけベクトルのメインベクトルで、値が非常に高くなり、 'push_back'性能が向上します。 – rodrigo

答えて

0

std::unordered_mapを参照してください。それはあなたのためにはるかに速くなければなりません。

関連する問題