アルゴリズム、解法、性能比較 - ページ 17 1...1011121314151617181920212223 新しいコメント Sergey Dzyublik 2017.12.11 09:41 #161 In specific task: index => valueCHashMapよりCArrayListの 方が速い。CArrayListは 2倍以上の容量を必要とし、新しい要素を追加する際の再配置も少なくなります(CArrayListは 成長係数2、現在の実装ではCHashMapは 約1.2)。 また,CArrayListの 結果を読み込む際の手間が省けます。 Vasiliy Sokolov 2017.12.11 09:46 #162 Sergey Dzyublik:このタスクの場合:インデックス => 値CArrayList はCHashMap よりも高速です。CArrayListは 2倍以上の容量を必要とし、新しい要素を追加する際の再構築も少なくなります(CArrayListは 成長係数2、現在の実装ではCHashMapは 約1.2)。 また,CArrayListの 結果を読み込む際の手間が省けます。ところで、CHashMapにはなぜかCapacityという 魔法のプロパティがありません(これは開発者の重大な過失です)。それを指定することで、再パーティションを回避している。このタスクで指定できるので、問題ないでしょう。 Vasiliy Sokolov 2017.12.11 09:47 #163 Sergey Dzyublik:In specific task: index => valueCHashMapよりCArrayListの 方が速い。CArrayListは 2倍以上の容量を必要とし、新しい要素を追加する際の再配置も少なくなります(CArrayListは 成長係数2、現在の実装ではCHashMapは 約1.2)。 また,CArrayListの 結果を読み込む際の手間が省けます。なぜスケール係数が違うのか、それも非常に不思議です。CHashMap は単純なCArrayList よりも並べ替えが困難です。 Реter Konow 2017.12.11 09:47 #164 さらに凝縮されたバージョン。//+------------------------------------------------------------------+ //| Magic 2.mq5 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ int All_magics[]; int order_number; int Random_orders_of_strategy; //+------------------------------------------------------------------+ void Trading() { Random_orders_of_strategy = MathRand(); //---------------------------------------- //Имитируем открытие неопределенного количества ордеров стратегии. //---------------------------------------- for(int a1 = 0; a1 < Random_orders_of_strategy; a1++) { int this_magic = MathRand(); //---------------------------- order_number++; //--------------------------------- //Меняем размрер массива на каждой итерации. //--------------------------------- ArrayResize(All_magics,order_number); All_magics[order_number - 1] = this_magic; //--------------------------------- } //---------------------------------------- } //+------------------------------------------------------------------+ int Get_magic(int deal_number) { return(All_magics[deal_number - 1]); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { Trading(); //-------------------------- ulong t1 = GetMicrosecondCount(); Get_magic(1000); ulong t2 = GetMicrosecondCount(); //-------------------------- Print("Время исполнения функции Get_magic() при количестве ордеров ",Random_orders_of_strategy," равно ",t2 - t1); //-------------------------- Print("Random_orders_of_strategy ",Random_orders_of_strategy); Print("magic 1: ",Get_magic(1)," magic 2: ",Get_magic(2)," magic 3: ",Get_magic(3)); } //+------------------------------------------------------------------+ Alexandr Andreev 2017.12.11 09:49 #165 Реter Konow:さらに凝縮されたバージョン。では、次のように使ってみましょう。template<typename T> Реter Konow 2017.12.11 09:50 #166 Alexandr Andreev: では、次のように使ってみましょう。template<typename T> なぜ? Yury Kulikov 2017.12.11 09:51 #167 Реter Konow:さらに凝縮されたバージョン。男は嘲笑を続ける...。 Vasiliy Sokolov 2017.12.11 09:52 #168 Реter Konow:さらに凝縮されたバージョン。でたらめなことを書いている。基本的には、インデックスで配列にアクセス する方法と同じです。現実には、トランザクションの数字はランダムであり、実際の問題を解決する必要があるときに、この例全体が崩れてしまいます。 Alexandr Andreev 2017.12.11 09:52 #169 Реter Konow: 何のために?まあ、配列を書き換えたり、改行 したりといった機能はありますが...。標準リリースでは、それらは普遍的なものではないので、常に書き直さなければなりません。つまり、自分自身の小さな機能のテンプレート、つまりある種の共通の Реter Konow 2017.12.11 09:52 #170 Yury Kulikov:男は嘲笑を続ける...。 特定の問題に対する完璧な解決策が、なぜいじめと受け取られるのか?マジで理解できない...。 1...1011121314151617181920212223 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
In specific task: index => value
CHashMapよりCArrayListの 方が速い。
CArrayListは 2倍以上の容量を必要とし、新しい要素を追加する際の再配置も少なくなります(CArrayListは 成長係数2、現在の実装ではCHashMapは 約1.2)。
また,CArrayListの 結果を読み込む際の手間が省けます。
このタスクの場合:インデックス => 値
CArrayList はCHashMap よりも高速です。
CArrayListは 2倍以上の容量を必要とし、新しい要素を追加する際の再構築も少なくなります(CArrayListは 成長係数2、現在の実装ではCHashMapは 約1.2)。
また,CArrayListの 結果を読み込む際の手間が省けます。
ところで、CHashMapにはなぜかCapacityという 魔法のプロパティがありません(これは開発者の重大な過失です)。それを指定することで、再パーティションを回避している。このタスクで指定できるので、問題ないでしょう。
In specific task: index => value
CHashMapよりCArrayListの 方が速い。
CArrayListは 2倍以上の容量を必要とし、新しい要素を追加する際の再配置も少なくなります(CArrayListは 成長係数2、現在の実装ではCHashMapは 約1.2)。
また,CArrayListの 結果を読み込む際の手間が省けます。
なぜスケール係数が違うのか、それも非常に不思議です。CHashMap は単純なCArrayList よりも並べ替えが困難です。
さらに凝縮されたバージョン。
さらに凝縮されたバージョン。
では、次のように使ってみましょう。
template<typename T>
では、次のように使ってみましょう。
template<typename T>
さらに凝縮されたバージョン。
男は嘲笑を続ける...。
さらに凝縮されたバージョン。
でたらめなことを書いている。基本的には、インデックスで配列にアクセス する方法と同じです。現実には、トランザクションの数字はランダムであり、実際の問題を解決する必要があるときに、この例全体が崩れてしまいます。
何のために?
まあ、配列を書き換えたり、改行 したりといった機能はありますが...。標準リリースでは、それらは普遍的なものではないので、常に書き直さなければなりません。
つまり、自分自身の小さな機能のテンプレート、つまりある種の共通の
男は嘲笑を続ける...。