2017-05-23 7 views
0

私は、約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でプロセスを高速化する方法はわかりません。

私のアプローチにいくつかの選択肢を提案できますか?

答えて

0

Windevは最速ではありません。しかし、あなたはこれのためにウィンデフを選んでいません。この場合、Parallel関数を使用するとプログラムがスピードアップする可能性があります。

更新24/05/2017 - 午前9時24

私の悪い、WINDEVは、C#言語の進化多かれ少なかれに従いますが、それらはC#Parallel.Forを実装していませんでした。 あなたの仕事をスピードアップしたいと思っていて、Windowsで作業しているだけの場合は、関数の汚い作業を行う.Netライブラリを使用して、アプリケーションから呼び出すParallel.Forを使用してください。更新24/05/2017 Windev works pretty smoothly with .Net Library.

- 10:58 そしてもちろん、私は正しいリンクを共有していない:http://doc.windev.com/en-US/?2012002

+0

おかげ@Bidjesを、あなたは少しあなたの答えを手の込んだだろうか?私はまた、私が直面している正確なケースでオリジナルの投稿を更新しました。 – rocotocloc

+0

私は外部言語のアプリケーションからWLanguageコードを実行できることを理解しています(Javaは例ですが、C#のあなたのリンクでも同じです:http://doc.windev.com/en-US/?7515001&name=external_language_programming_java)が必要ですWLanguageで書かれたアプリ全体を持っているので、汚い仕事をするためにいくつかの外部Java/C#ルーチンを呼び出さなければなりません。メインのWL言語アプリケーションからこの外部タスクを呼び出すにはどうすればいいですか(実際のシナリオは、アップロードした単純なプロジェクトだけでなく、大きなWLanguageアプリケーションです) – rocotocloc

+0

これを見ていきますが、.NETであまり経験はありません。私がついにこのようなことをしなければならない場合、私は外部のJavaアプリケーションで何かをしようとしていると思う。コメントしてくださってありがとうございます。 – rocotocloc