プログラミングの構造を最適化することの重要性について

作者: リン・ハーン, 作成日:2021-05-22 05:57:14, 更新日:

公開プログラムとして公開されているため,多くの場合,小さな問題が発生します.今日,コード構造の最適化の重要性をお話ししましょう.

利息について,最も重要なことは2つあります. 1.資金利用率. 2.注文速度.

注文の速度は,一般的に取引所の近くにあるサーバーやより良いネットワークを購入することなどに頼る.しかし,実際には,ほとんどの新人にとって,単なるコード構造の最適化だけで,策略を数万ミリ秒早くすることができます.

しかし,トランザクションペアが1つしかない場合,コード構造の最適化速度が1ms未満に上昇することが多いので,差はほとんど見えません.

資金利用率の向上は,同じ資金で複数の取引ペアを同時に観察することが必要である場合が多いため,論理回転回数が増加する.このとき,コード構造の最適化の利点は明らかである.一般的には,多くの取引所では,複数の取引を複数回調査する複雑さはO (n) です.

A-C と A-B-C の2つのルートがあるという例を挙げましょう. 2つの経路はそれぞれ2回計算が必要であり,一度は経路がもたらす利益を計算し,p1とp2を仮定し,一度は経路を計算し,それぞれの取引所とその取引に対して特定の請求が必要となる価格と金額を計算する.

最も一般的な書き込みは,利益を計算する関数を書き込むこと. その関数は,価格と金額を指定します. その後,ループで呼び出し,各経路の利益を得て,最大利益を選択して取引を行う.

明らかに,比較では利益を計算するだけで,最初から請求価格と金額を計算する必要はありません.

したがって,最適化では,profitsとgetlistを2つの関数に分割することができる.まず,profitsをループに呼び,それぞれの経路のprofitsを得,その後,最大のprofitsを選択して取引を行う.したがって,論理的にgetlist関数は,毎回ループから呼び,一度のみ呼びになる.時間複雑性はO (((2nからO (((n+1),nからセット経路の総数に変わります.

次にコードをさらに分析すると,通常,他の利害関係者が存在しているため,一度ある経路が利害関係があるとき,それはしばしば他の経路によって利害関係があることがわかります.したがって,複数の経路が同時に利害関係がある場合はほとんどありません.

戦略をさらに最適化して,ループを設定し,ループにif文を加え,もしある経路が利潤があると発見されれば,それをブレイクして,その経路の請求数と価格を計算します.

複雜性は O ((n+1) からさらに簡素化され,O ((m+1) となる. m

つまり,単純な分解関数を使って,論理最適化構造を分析することで,時間複雑性をO ((n2) nからO ((n/2+1) に減らすことができる.

実際,コードを書くときに最適化できるシナリオはたくさんあります.私はコードを書くときにしばしば書き終わってから,しばしば最適化論理の時に,あるO (n!) をO (n* (n+1) に最適化する可能性があることを発見します.時には数百ミリ秒で完了する論理を1ms以内に最適化することもできます.

戦略的な質問の間隔を大幅に減らすために,少し時間を費やすことで,コード構造を最適化することをお勧めします.


もっと

骨ナイフ利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息の利息が

掛札が取引所に到着する遅延

アレッズ遅延とは,深層データの遅延を意味するのでしょうか?

記録遅延,ある値を超えると当時の利息は行われない.また,遅延の高さ順序でリストを挂じる.