助けてください問題が解決できない、ハードウェアの限界にぶつかる - ページ 12

 
komposter:


データベース全体が10,000行に収まるかどうか? すべてのファイルを合わせて
 
Candid:

でも、配列はそれぞれ独立していますよね?では、なぜシングルロードされたシーケンスの日付を一度にループさせることができないのでしょうか?ここで、ちなみに、何か効率的な再帰アルゴリズムに行くことも可能かもしれませんが、それは運次第です。100万に100万のサイズはそのままで、1回だけファイルを読み込むことになります。

もちろん、次の反復でステップ数が変わらない(計算が進んでも探索領域が狭くならない)問題は、あまりロバストには見えません。しかし、これはもちろん主観的なものです。

このような次元での再帰性は、キャッシュの制限を超えると低下する。
 
多くの単一タイプのトランザクションのシーケンスがあり、各シーケンスは時間によってソートされて います。

Сделки в разных последовательностях разные, по времени распределены неравномерно (и в каждой последовательности по своему). Сделок разное количество. Но все - в интервале от Даты1 до Даты2.

タスクは、D1からD2へM分のステップで移動し(あるいは、より良い - すべての配列の取引を行うポイントによって正確に)、基準Kによって他のものより優れている配列を見つけることです(別のタスク - 単に最高の配列を見つけるのではなく、基準によってセット全体をソートしてトップ10を出力 - しかしそれはオプションで、まだ必要ありません).

基準Kは、対応するシーケンスにおけるX回の過去の取引に基づき、X回の各取引に関するほぼ全ての情報(例えば、利益だけでは不十分)を計算しながら算出されます。

ここからが本番だったのです。

私は次のことを正しく理解しているでしょうか。

1) 20GBのファイルには、約100万個の配列が時間順に並んでいます。

2) 各シーケンスのサイズは、シーケンスに含まれるディールの 数に依存し、変動する可能性があります。

3) 配列の平均サイズは20/10^6 = 20 Mbであり、1つの配列を完全にダウンロードするために何を保証できるのか?

4) K係数は与えられたシーケンス内のトレードにのみ依存する

5) 各配列について、K個(合計10^6個)を求め、上位10個を選択する。

A 配列間の距離の値を記録したファイルをもう一つ作ると。

1) ダウンロードできる配列の数を確認し、それらの間の距離を合計する (合計の中間値を保持する)

2) 距離をファイルからRAMに読み込む

3) 検索アルゴリズムの各シーケンスに対して実行し、Kを求める(ステップ1で計算したサブタムを保持しているので、シーケンスの開始位置がわかる)。

4) もう一度1を開始し、少し前に移動します。

トップ10に関しては

nはKの値の総和、mはベストの数である。

1) すべてのKを見つけ、ヒープデータ構造の助けを借りて、必要な数の最適値を選ぶことができる(ヒープO(n)を取得、最適値を選ぶO(log n) 回数m、メモリ内のスペース-n)。

2) 必要な数 - m個のインスタンス(例えば10個)を数え、それらをソートして、残りのK個のインスタンスの挿入点を二項探索で見つける。

(初期ソート O(m*log m), 挿入探索 O(log m) 回数 (n-m), 挿入 O(1), 占有メモリ空間 - m).

 
Urain:
これらの次元での再帰は、キャッシュの制限を超えると低下します。
古典的な再帰では、キャッシュのサイズは固定である。
 
ALXIMIKS:

3) 平均的なシーケンスサイズは20/10^6 = 20 MBですが、私たちが保証できる1つのシーケンスを完全にロードするにはどうしたらよいでしょうか?

ちなみに、そうですね、シーケンスのバッチを一度にロードすることができます。
 

何が必要で何が与えられているのか、要領を得ない感じです((

 А потом "нужная дата" сдвигается на точку закрытия сделки из выбранной последовательности и алгоритм повторяется.

そして、1GB = 1000mb = 10^6kb なので、20/10^6 = 20kb となります。

 
YuraZ:

SQLに向かう


  • 比較的新しい(じっくりと作業したことがない、基本的な問い合わせのみ)。

これは学習段階ではかなり遅いかもしれません。

このオプションを選択した場合、すべてのビジネスロジックをストアドプロシージャで構築することをお勧めします。

Expert Advisor の機能は、サーバーにリクエストを送信し、完全に終了した結果を得るという 2 つだけです。

サーバー上のすべての計算

  • 1台のクライアントマシン(スタンドアロン版)へのインストールが複雑であること。

実際、ネット上ではSQLサーバーを置くための記述が多く見られます。

( ORACL, SYBASE + CENTOS の例 ) ORACL, SYBASE, MS SQL + WINDOWS のスタンドアローンマシン。

ORACLは、専門家が少なく、文献も少ないので、学ぶのが少し複雑です。

MS SQL - おそらくウェブ上で最大の情報量とより多くの文献があります。

ウェブにはたくさんの解説がありますし、ショップにはもっとたくさんの本がありますから、難しいことはありません。

MSSQL 2012は、そのパラメータによって、ORACLに非常に近くなっています - すでに2014年に。

SQL + LINUXは、通常、本番環境での運用に選択されます。LINUXについて何も知らない場合は、WINDOWSを使用する方がよいでしょう。

MSSQL Expresバルーンですが、制限で1コア、1Gbのメモリ、10Gbのベースを使用します。

が支給されます。

 
komposter:
...

似たような案件の並びがたくさんあり、それぞれの並びは時間ごとにソートされています。

異なるシーケンスでのトランザクションは、時間的に不均一に分布している(各シーケンスで異なる方法)。案件の数が違う。しかし、それらはすべてDate1からDate2までの区間である。

タスク - D1からD2へM分のステップで移動し(またはそれ以上 - 具体的にはすべてのシーケンスを取引するポイントによって)、基準Kによって他のものより優れているシーケンスを、見つける(別のタスク - 単に最高のシーケンスを見つけるのではなく、基準によってセット全体をソートしてトップ10を出力 - しかしそれはオプションで、まだ必要ではありません)。

...

どこがどうなのかわからない。

Date1からDate2までの区間に 基準-all-が 存在する。

komposter

全てはこうだ。

そして、「正しい日付」は、選択されたシーケンスのディールクロージングポイントにシフトされ、このアルゴリズムが繰り返されるのです。

などと100万回も言っている =)

すなわち、次が読まれる。

ファイルをDate1からDate2までの 多くの間隔のものに分割してはどうでしょうか?クローズできる使い切り配列も出てきますよね?

 
Silent:

どこがどうなのかわからない。

ここに基準があります -すべてがDate1とDate2の間に あることです。

すなわち、次のように読み取ります。

Date1からDate2までの 多くの間隔にファイルを分割してはどうでしょうか?使い切った配列があり、それを閉じることができるのでしょう?

どうやら1回の日付パスの結果の1つは、新しい日付になるようです。
 

ということであれば

列挙 1 2 3 4 5 6 7 8 9

幅が例えば4であった場合、この幅で行全体を移動し、幅の内側にある値(例えば最小値)を見つけなければならない。

まず、1 2 3 4 → 2 3 4 5 → 3 4 5 6 → 4 5 6 7 → ...で検索する必要があります。など

の場合、キューのデータ構造で 最小値を維持することでタスクを解決する。

1) mails.ruのビデオコースで、4つのスタックデータ構造による実装が提案されました。

2) キューデータ構造とデコードデータ構造による実装を口頭で考案しました。おそらく誰かが既に一度やっていて、その人の名前がついているので、それを探せばいいだけです。