私のアプローチコアはエンジンです。 - ページ 123 1...116117118119120121122123124125126127128129130...184 新しいコメント Vladimir 2019.01.05 00:14 #1221 Реter Konow:... ZS.再描画でプロセッサに負荷がかかっている可能性もありますが。つまり、画素の配列の中に描画することです。つまり、タイマーの高い周波数(16ms)で、常に配列の値を初期化 する。いいえ、再描画はプロセッサに負荷をかけるものではなく、グラフィックスドライバにコマンドを送るために数ナノ秒からせいぜいマイクロ秒の時間がかかるだけなのです。ビデオカードのプロセッサーは、画素単位で描画そのものを行いますが、通常は数百個あり、プロセッサーと同時に並行して動作しています。つまり、プロセッサはグラフィックスドライバに対して、「画面座標Xc,Ycに中心を持ち、半径Rの円をCopyPutモードで表示せよ」という命令を出すのです。プロセッサにとっては、これはパラメータを渡された単なる関数呼び出しに過ぎない。それ以上には踏み込まない。このような呼び出しは、例えば、2回/秒よりも頻繁に行われないと、ユーザーは単に画面上の何かを理解することはできません、それはそう頻繁に引っ張ることはできません。未決済取引のリストであれば、1時間、1日、あるいはそれ以上かかることも想像できます。 そして、ピクセル単位の色付けのアルゴリズム(例えば「Bresenham Algorithm」でググってみてください)はグラフィックカードが実行し、プロセッサはそれをダラダラと見ているわけではありません。また、実行速度も非常に速い。そして...1回の通話で1回。16msでの再初期化は必要なく、プロセッサの指令で新たに変更が加えられるまで、画面イメージはビデオメモリ内で一定に保たれる。それだけでなく、目に見える画面の反応を速くするために、ビデオメモリも2つのインスタンスで保持し、見えないほうに変更を加えてから、すぐにビデオページを切り替えます。 もし、あなたの画面出力へのアプローチがまだ、あなたが言うようなピクセルの「配列の 一定の初期化」を持っているならば、それを取り除くべきです。 Andrey Barinov 2019.01.05 03:23 #1222 Реter Konow:クリックすると表示されます。写真のOpening Timeの欄のデータがおかしい。 Nikolai Semko 2019.01.05 04:54 #1223 Vladimir:いいえ、再描画はプロセッサに何の負荷もかけず、せいぜい数ナノ秒からマイクロ秒の時間をかけてグラフィックスドライバにコマンドを送るだけです。ビデオカードのプロセッサーは、画素ごとに描画そのものを行うが、通常は数百個あり、プロセッサーと同時に並列に動作する。つまり、プロセッサはグラフィックスドライバに対して、「画面座標Xc,Ycに中心を持ち、半径Rの円をCopyPutモードで表示せよ」という命令を出すのです。プロセッサにとっては、これはパラメータを渡された単なる関数呼び出しに過ぎない。それ以上には踏み込まない。このような呼び出しは、例えば、2回/秒よりも頻繁に行われないと、ユーザーは単に画面上の何かを理解することはできません、それはそんなに頻繁に引っ張ることはできません。未決済取引のリストであれば、1時間、1日、あるいはそれ以上かかることも想像できます。 そして、ピクセル単位の色付けのアルゴリズム(例えば「Bresenham Algorithm」でググってみてください)はグラフィックカードが実行し、プロセッサはそれをダラダラと見ているわけではありません。また、実行速度も非常に速い。そして...1回の通話で1回。16msでの再初期化は必要なく、プロセッサの指令で新たに変更が加えられるまで、画面イメージはビデオメモリ内で一定に保たれる。それだけでなく、目に見える画面の反応を速くするために、ビデオメモリーを2つに分けて保持し、見えないほうに変更を加えてから、すぐにビデオページを切り替えるようにしています。 もし、画面出力のアプローチに、あなたが言うようなピクセルの「永久配列初期化」が残っているならば、それは取り除くべきでしょう。なんということでしょう・・・。 断片的な知識の寄せ集めのような...。 結局、そういうわけにはいかないんです。 Реter Konow 2019.01.05 10:07 #1224 Vladimir:いいえ、再描画はプロセッサに何の負荷もかけず、せいぜい数ナノ秒からマイクロ秒程度でグラフィックスドライバにコマンドを送信する程度です。ビデオカードのプロセッサーは、画素ごとに描画そのものを行うが、通常は数百個あり、プロセッサーと同時に並列に動作する。つまり、プロセッサはグラフィックスドライバに対して、「画面座標Xc,Ycに中心を持ち、半径Rの円をCopyPutモードで表示せよ」という命令を出すのです。プロセッサにとっては、これはパラメータを渡された単なる関数呼び出しに過ぎない。それ以上には踏み込まない。このような呼び出しは、例えば、2回/秒よりも頻繁に行われないと、ユーザーは単に画面上の何かを理解することはできません、それはそう頻繁に引っ張ることはできません。未決済取引のリストであれば、1時間、1日、あるいはそれ以上かかることも想像できます。 そして、ピクセル単位の色付けのアルゴリズム(例えば「Bresenham Algorithm」でググってみてください)はグラフィックカードが実行し、プロセッサはそれをダラダラと見ているわけではありません。また、実行速度も非常に速い。そして...1回の通話で1回。16msでの再初期化は必要なく、プロセッサの指令で新たに変更が加えられるまで、画面イメージはビデオメモリ内で一定に保たれる。それだけでなく、見える画面の反応を早くするために、ビデオメモリも二重化しておき、見えないほうに変更を加えてから、すぐにビデオページを切り替えています。 もし、あなたの出力へのアプローチが、まだピクセルの「配列の 一定した初期化」を持っているならば、それを取り除く必要があります。面白い理論ですね。しかし、私の実験結果とは全く合わないので、これから下に掲載します。 テストが示すように、CPUに最も負荷をかけるのは画素配列の初期化です。 以下のテストEAをご確認ください。 Реter Konow 2019.01.05 10:16 #1225 正直なところ、このテスト結果には少し驚きました。 そして、16msの頻度でコンスタントに関数が呼び出されるという話です。 その結果、プロセッサに最も負荷をかけるのは、描画時の画素配列の初期化 であることが判明しました。 しかし、一番不思議だったのは、繰り返される関数呼び出しが ObjectSetInteger(0,"MT object",OBJPROP_SELECTED,1); の場合、プロセッサに10〜15%の負荷がかかります。 また、コール ObjectSetString(0,"MT object",OBJPROP_BMPFILE,"::MT object"); ObjectSetString(0,"MT object",OBJPROP_TEXT,"QWERTY"); は、同じ10-15%でプロセッサに負荷をかけます。 同時に、3つの機能の同時呼び出し ObjectSetInteger(0,"MT object",OBJPROP_SELECTED,1); ObjectSetString(0,"MT object",OBJPROP_BMPFILE,"::MT object"); ObjectSetString(0,"MT object",OBJPROP_TEXT,"QWERTY"); 負荷スタックを起こさない。負荷はまだ10〜15%です。 しかし、これらの呼び出しに100万セルの定数配列再初期化ループを追加した場合 for(int a1 = 0; a1 < 1000000; a1++)Arr[a1] = MathRand(); になると、CPUの負荷は50%に上昇します。 //----------------------------------------------------------------------------------------------------------------------------------------------------- 機能そのもの ResourceCreate("::MT object",Arr,1000000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA); はプロセッサーに負荷をかけない。 機能 ResourceReadImage("::MT object",Arr,w,h); は、Arr[]配列のサイズに応じて0〜5%の負荷がかかります。 Реter Konow 2019.01.05 10:17 #1226 こちらはテストアドバイザーです。行をコメントし、タスクマネージャーでCPU負荷を確認する必要があります。 ファイル: Test_1.mq4 11 kb Реter Konow 2019.01.05 10:21 #1227 これが彼のコードです。 //+------------------------------------------------------------------+ //| Test_1.mq4 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ uint Arr[1000000]; //+------------------------------------------------------------------+ int OnInit() { //--- create timer EventSetMillisecondTimer(16); //---------------------------------------------------- //Создаем МТ-объект. //---------------------------------------------------- ObjectCreate(0,"MT object",OBJ_BITMAP_LABEL,0,0,0); //---------------------------------------------------- //Соединяем с файлом. //---------------------------------------------------- ObjectSetString(0,"MT object",OBJPROP_BMPFILE,"::MT object"); //---------------------------------------------------- //Создаем ресурс. //---------------------------------------------------- ResourceCreate("::MT object",Arr,1000000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA); //---------------------------------------------------- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- uint w = 0,h = 0; string name; //---------------------------------------------------- //Читаем свойство bool.//Нагрузка процессора отсутствует. //---------------------------------------------------- ObjectGetInteger(0,"MT object",OBJPROP_SELECTED); //---------------------------------------------------- //---------------------------------------------------- //Устанавливаем свойство bool.//Нагрузка процессора: 10% - 15%. //---------------------------------------------------- ObjectSetInteger(0,"MT object",OBJPROP_SELECTED,1); //---------------------------------------------------- //---------------------------------------------------- //Перерисовываем изображение в массиве Arr[]. //Нагрузка процессора зависит от размера массива. //При 10000 ячеек, нагрузки нет, при 1000000 ячеек, - ~35%. //---------------------------------------------------- for(int a1 = 0; a1 < 1000000; a1++)Arr[a1] = MathRand(); //---------------------------------------------------- //---------------------------------------------------- //Пересоздаем ресурс.//Нагрузка процессора отсутствует //при любом размере массива. //---------------------------------------------------- ResourceCreate("::MT object",Arr,1000000,1,0,0,0,COLOR_FORMAT_XRGB_NOALPHA); //---------------------------------------------------- //---------------------------------------------------- //Читаем ресурс. //Нагрузка процессора зависит от размера массива. //При 10000 ячеек, нагрузки нет, при 1000000 ячеек, //Нагрузка "плавает" от 1 до 6%. //---------------------------------------------------- ResourceReadImage("::MT object",Arr,w,h); //---------------------------------------------------- //---------------------------------------------------- //Пересоединяем с файлом.//Нагрузка процессора: 10% - 15% //---------------------------------------------------- ObjectSetString(0,"MT object",OBJPROP_BMPFILE,"::MT object"); //---------------------------------------------------- //---------------------------------------------------- //Устанавливаем описание объекта.//Нагрузка процессора: 10% - 15% //---------------------------------------------------- ObjectSetString(0,"MT object",OBJPROP_TEXT,"QWERTY"); //---------------------------------------------------- //---------------------------------------------------- //Читаем описание объекта.//Нагрузка процессора отсутствует. //---------------------------------------------------- name = ObjectGetString(0,"MT object",OBJPROP_TEXT); } //+------------------------------------------------------------------+ Реter Konow 2019.01.05 10:30 #1228 Andrey Barinov:画像のOpening Timeの欄のデータがおかしいんだけど。TimeToStr(OrderOpenPrice(),TIME_MINUTES|TIME_SECONDS) を使いました。 なんでそんなことになってるんだろう。 Maxim Kuznetsov 2019.01.05 10:48 #1229 Реter Konow:正直なところ、このテスト結果には少し驚きました。 そして、16msの頻度でコンスタントに関数が呼び出されるという話です。 その結果、プロセッサに最も負荷をかけるのは、描画時の画素配列の初期化 であることが判明しました。 しかし、一番不思議だったのは、繰り返される関数呼び出しが の場合、プロセッサに10〜15%の負荷がかかります。 また、コール は、同じ10〜15%でプロセッサに負荷をかけます。 同時に、3つの機能の同時呼び出し 負荷スタックを起こさない。負荷はまだ10〜15%です。 しかし、これらの呼び出しに100万セルの定数配列再初期化ループを追加した場合 になると、CPUの負荷は50%に上昇します。 //----------------------------------------------------------------------------------------------------------------------------------------------------- 機能そのもの はプロセッサーに負荷をかけない。 機能 は、Arr[]配列のサイズに応じて、0〜5%の荷重がかかります。レトログ・コノウ。正直なところ、このテストの結果には少し驚きました。 つまり、16msecで一定の関数呼び出しをしているということです。 その結果、プロセッサに最も負荷がかかるのは、描画時の画素配列の初期化 であることが判明しました。 しかし、一番不思議だったのは、繰り返される関数呼び出しが の場合、プロセッサに10〜15%の負荷がかかります。 また、コール は、同じ10-15%でプロセッサに負荷をかけます。 同時に、3つの機能の同時呼び出し 負荷スタックを起こさない。負荷はまだ10〜15%です。 しかし、これらの呼び出しに100万セルの定数配列再初期化ループを追加した場合 になると、CPUの負荷は50%に上昇します。 //----------------------------------------------------------------------------------------------------------------------------------------------------- 機能そのもの はプロセッサーに負荷をかけない。 機能 は、Arr[]配列のサイズに応じて0〜5%の負荷がかかります。 ピーター 何百ページも言われたことを聞かないというのは、しつこいくらいにありますね。 スレッドを読み直す - "なぜそうなのか "という質問に対する答えがあります。 Andrey Barinov 2019.01.05 11:49 #1230 Реter Konow:TimeToStr(OrderOpenPrice(),TIME_MINUTES|TIME_SECONDS) を使いました。 なぜかわからないけど。OrderOpenPriceの代わりにOrderOpenTime()を入れるからです。 1...116117118119120121122123124125126127128129130...184 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
...
ZS.再描画でプロセッサに負荷がかかっている可能性もありますが。つまり、画素の配列の中に描画することです。つまり、タイマーの高い周波数(16ms)で、常に配列の値を初期化 する。
いいえ、再描画はプロセッサに負荷をかけるものではなく、グラフィックスドライバにコマンドを送るために数ナノ秒からせいぜいマイクロ秒の時間がかかるだけなのです。ビデオカードのプロセッサーは、画素単位で描画そのものを行いますが、通常は数百個あり、プロセッサーと同時に並行して動作しています。つまり、プロセッサはグラフィックスドライバに対して、「画面座標Xc,Ycに中心を持ち、半径Rの円をCopyPutモードで表示せよ」という命令を出すのです。プロセッサにとっては、これはパラメータを渡された単なる関数呼び出しに過ぎない。それ以上には踏み込まない。このような呼び出しは、例えば、2回/秒よりも頻繁に行われないと、ユーザーは単に画面上の何かを理解することはできません、それはそう頻繁に引っ張ることはできません。未決済取引のリストであれば、1時間、1日、あるいはそれ以上かかることも想像できます。
そして、ピクセル単位の色付けのアルゴリズム(例えば「Bresenham Algorithm」でググってみてください)はグラフィックカードが実行し、プロセッサはそれをダラダラと見ているわけではありません。また、実行速度も非常に速い。そして...1回の通話で1回。16msでの再初期化は必要なく、プロセッサの指令で新たに変更が加えられるまで、画面イメージはビデオメモリ内で一定に保たれる。それだけでなく、目に見える画面の反応を速くするために、ビデオメモリも2つのインスタンスで保持し、見えないほうに変更を加えてから、すぐにビデオページを切り替えます。
もし、あなたの画面出力へのアプローチがまだ、あなたが言うようなピクセルの「配列の 一定の初期化」を持っているならば、それを取り除くべきです。
クリックすると表示されます。
写真のOpening Timeの欄のデータがおかしい。
いいえ、再描画はプロセッサに何の負荷もかけず、せいぜい数ナノ秒からマイクロ秒の時間をかけてグラフィックスドライバにコマンドを送るだけです。ビデオカードのプロセッサーは、画素ごとに描画そのものを行うが、通常は数百個あり、プロセッサーと同時に並列に動作する。つまり、プロセッサはグラフィックスドライバに対して、「画面座標Xc,Ycに中心を持ち、半径Rの円をCopyPutモードで表示せよ」という命令を出すのです。プロセッサにとっては、これはパラメータを渡された単なる関数呼び出しに過ぎない。それ以上には踏み込まない。このような呼び出しは、例えば、2回/秒よりも頻繁に行われないと、ユーザーは単に画面上の何かを理解することはできません、それはそんなに頻繁に引っ張ることはできません。未決済取引のリストであれば、1時間、1日、あるいはそれ以上かかることも想像できます。
そして、ピクセル単位の色付けのアルゴリズム(例えば「Bresenham Algorithm」でググってみてください)はグラフィックカードが実行し、プロセッサはそれをダラダラと見ているわけではありません。また、実行速度も非常に速い。そして...1回の通話で1回。16msでの再初期化は必要なく、プロセッサの指令で新たに変更が加えられるまで、画面イメージはビデオメモリ内で一定に保たれる。それだけでなく、目に見える画面の反応を速くするために、ビデオメモリーを2つに分けて保持し、見えないほうに変更を加えてから、すぐにビデオページを切り替えるようにしています。
もし、画面出力のアプローチに、あなたが言うようなピクセルの「永久配列初期化」が残っているならば、それは取り除くべきでしょう。
なんということでしょう・・・。
断片的な知識の寄せ集めのような...。
結局、そういうわけにはいかないんです。
いいえ、再描画はプロセッサに何の負荷もかけず、せいぜい数ナノ秒からマイクロ秒程度でグラフィックスドライバにコマンドを送信する程度です。ビデオカードのプロセッサーは、画素ごとに描画そのものを行うが、通常は数百個あり、プロセッサーと同時に並列に動作する。つまり、プロセッサはグラフィックスドライバに対して、「画面座標Xc,Ycに中心を持ち、半径Rの円をCopyPutモードで表示せよ」という命令を出すのです。プロセッサにとっては、これはパラメータを渡された単なる関数呼び出しに過ぎない。それ以上には踏み込まない。このような呼び出しは、例えば、2回/秒よりも頻繁に行われないと、ユーザーは単に画面上の何かを理解することはできません、それはそう頻繁に引っ張ることはできません。未決済取引のリストであれば、1時間、1日、あるいはそれ以上かかることも想像できます。
そして、ピクセル単位の色付けのアルゴリズム(例えば「Bresenham Algorithm」でググってみてください)はグラフィックカードが実行し、プロセッサはそれをダラダラと見ているわけではありません。また、実行速度も非常に速い。そして...1回の通話で1回。16msでの再初期化は必要なく、プロセッサの指令で新たに変更が加えられるまで、画面イメージはビデオメモリ内で一定に保たれる。それだけでなく、見える画面の反応を早くするために、ビデオメモリも二重化しておき、見えないほうに変更を加えてから、すぐにビデオページを切り替えています。
もし、あなたの出力へのアプローチが、まだピクセルの「配列の 一定した初期化」を持っているならば、それを取り除く必要があります。
面白い理論ですね。しかし、私の実験結果とは全く合わないので、これから下に掲載します。
テストが示すように、CPUに最も負荷をかけるのは画素配列の初期化です。
以下のテストEAをご確認ください。
正直なところ、このテスト結果には少し驚きました。
そして、16msの頻度でコンスタントに関数が呼び出されるという話です。
その結果、プロセッサに最も負荷をかけるのは、描画時の画素配列の初期化 であることが判明しました。
しかし、一番不思議だったのは、繰り返される関数呼び出しが
の場合、プロセッサに10〜15%の負荷がかかります。
また、コール
は、同じ10-15%でプロセッサに負荷をかけます。
同時に、3つの機能の同時呼び出し
負荷スタックを起こさない。負荷はまだ10〜15%です。
しかし、これらの呼び出しに100万セルの定数配列再初期化ループを追加した場合
になると、CPUの負荷は50%に上昇します。
//-----------------------------------------------------------------------------------------------------------------------------------------------------
機能そのもの
はプロセッサーに負荷をかけない。
機能
は、Arr[]配列のサイズに応じて0〜5%の負荷がかかります。
こちらはテストアドバイザーです。行をコメントし、タスクマネージャーでCPU負荷を確認する必要があります。
これが彼のコードです。
画像のOpening Timeの欄のデータがおかしいんだけど。
TimeToStr(OrderOpenPrice(),TIME_MINUTES|TIME_SECONDS) を使いました。
なんでそんなことになってるんだろう。
正直なところ、このテスト結果には少し驚きました。
そして、16msの頻度でコンスタントに関数が呼び出されるという話です。
その結果、プロセッサに最も負荷をかけるのは、描画時の画素配列の初期化 であることが判明しました。
しかし、一番不思議だったのは、繰り返される関数呼び出しが
の場合、プロセッサに10〜15%の負荷がかかります。
また、コール
は、同じ10〜15%でプロセッサに負荷をかけます。
同時に、3つの機能の同時呼び出し
負荷スタックを起こさない。負荷はまだ10〜15%です。
しかし、これらの呼び出しに100万セルの定数配列再初期化ループを追加した場合
になると、CPUの負荷は50%に上昇します。
//-----------------------------------------------------------------------------------------------------------------------------------------------------
機能そのもの
はプロセッサーに負荷をかけない。
機能
は、Arr[]配列のサイズに応じて、0〜5%の荷重がかかります。
正直なところ、このテストの結果には少し驚きました。
つまり、16msecで一定の関数呼び出しをしているということです。
その結果、プロセッサに最も負荷がかかるのは、描画時の画素配列の初期化 であることが判明しました。
しかし、一番不思議だったのは、繰り返される関数呼び出しが
の場合、プロセッサに10〜15%の負荷がかかります。
また、コール
は、同じ10-15%でプロセッサに負荷をかけます。
同時に、3つの機能の同時呼び出し
負荷スタックを起こさない。負荷はまだ10〜15%です。
しかし、これらの呼び出しに100万セルの定数配列再初期化ループを追加した場合
になると、CPUの負荷は50%に上昇します。
//-----------------------------------------------------------------------------------------------------------------------------------------------------
機能そのもの
はプロセッサーに負荷をかけない。
機能
は、Arr[]配列のサイズに応じて0〜5%の負荷がかかります。
ピーター 何百ページも言われたことを聞かないというのは、しつこいくらいにありますね。
スレッドを読み直す - "なぜそうなのか "という質問に対する答えがあります。
TimeToStr(OrderOpenPrice(),TIME_MINUTES|TIME_SECONDS) を使いました。
なぜかわからないけど。
OrderOpenPriceの代わりにOrderOpenTime()を入れるからです。