私は、約7百万回繰り返すネストされた 'for'ループを持つ単純なWinDevアプリケーションでパフォーマンスの問題に直面していました。ループパフォーマンスの問題
この簡単なアプリケーションでは、WinDevで30秒かかっていましたが、JavaまたはC++で約10ミリ秒しかかかりませんでした(はい、同じアプリだと思います)。
多くの試行の後、私はJavaとWinDevの両方で180万回の繰り返しを行うための単純なforループを作成しましたが、今はWinDevの一般的なパフォーマンスに懸念しています。私のコンピュータで
dtStartDate = SysDateTime()
myCount is int = 0
mySize is int = 180000000
FOR i = 1 _TO_ mySize
myCount++
END
dtFinalDate = SysDateTime()
dDiferenciaCalculada = dtFinalDate - dtStartDate
UpdateDebugOutput("time: " + dDiferenciaCalculada..InMilliseconds + "; myCount: " + myCount)
RETURN
このループはWINDEVに完了するために、周りの5000ミリ秒かかるが、Javaでわずか60ミリ秒「の」:これは単純なプログラムです。
私が間違っていることはありますか?
ありがとうございました。
--- UPDATE 20170524 ---
私がテストした実際のアプリケーションは次です:
WINDEVアプリ:https://www.dropbox.com/s/3vm0yrfcb3wc46r/TestProject.zip?dl=0
Javaアプリケーション:https://www.dropbox.com/s/j896r3pl5kh2iit/playground_java.zip?dl=0
それは簡単ですappは、ファイルを読み込み、基本的な計算を行い、そのデータで配列のオブジェクトを塗りつぶします。 WindDevアプリは約27秒、Javaアプリは数ミリ秒しかかからず、WinDevでプロセスを高速化する方法はわかりません。
私のアプローチにいくつかの選択肢を提案できますか?
おかげ@Bidjesを、あなたは少しあなたの答えを手の込んだだろうか?私はまた、私が直面している正確なケースでオリジナルの投稿を更新しました。 – rocotocloc
私は外部言語のアプリケーションからWLanguageコードを実行できることを理解しています(Javaは例ですが、C#のあなたのリンクでも同じです:http://doc.windev.com/en-US/?7515001&name=external_language_programming_java)が必要ですWLanguageで書かれたアプリ全体を持っているので、汚い仕事をするためにいくつかの外部Java/C#ルーチンを呼び出さなければなりません。メインのWL言語アプリケーションからこの外部タスクを呼び出すにはどうすればいいですか(実際のシナリオは、アップロードした単純なプロジェクトだけでなく、大きなWLanguageアプリケーションです) – rocotocloc
これを見ていきますが、.NETであまり経験はありません。私がついにこのようなことをしなければならない場合、私は外部のJavaアプリケーションで何かをしようとしていると思う。コメントしてくださってありがとうございます。 – rocotocloc