我遇到了一个简单的WinDev应用程序的性能问题,它有几个嵌套的“for”循环,迭代次数约为700万次。
这个简单的应用程序在WinDev中花费了大约30秒的时间,但在Java或C++中仅需10毫秒(是的,我确信它是同一个应用程序)。
经过多次尝试,我只是做了一个简单的'for‘循环,在Java和WinDev中迭代1.8亿次,现在我关心的是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
在我的计算机中,这个“for”循环需要大约5000毫秒的时间来完成,而在Java中只需要60毫秒。
我做错什么了吗?
非常感谢。
-更新20170524 --
我正在测试的真正应用程序是下一个:
WinDev应用程序:https://www.dropbox.com/s/3vm0yrfcb3wc46r/TestProject.zip?dl=0
Java应用:java.zip?dl=0
这是一个简单的应用程序,可以读取文件,进行一些基本的计算,并用这些数据填充数组中的一些对象。WindDev应用程序大约需要27秒,而Java应用程序只需几毫秒,我不知道如何在WinDev中加速这个过程。
你能提出一些替代我的方法吗?
发布于 2017-05-24 05:46:31
温德夫不是最快的,而且到目前为止。但你不会因为这个而选择温德夫。在这种情况下,使用并行函数可以明显地加快程序的速度。
更新24/05/2017 - 09:24
糟糕的是,温德夫或多或少地遵循了C#语言的演进,但他们没有实现C# Parallel.For。如果您真的想加快工作速度,并且只在Windows上工作,则可以使用.Net库来完成函数的脏工作,并使用您从应用程序中调用的Parallel.For
。温德夫在.Net库中非常顺利地工作。
更新24/05/2017 - 10:58,当然我没有分享正确的链接:http://doc.windev.com/en-US/?2012002
https://stackoverflow.com/questions/44130407
复制相似问题