我将csv的不同部分分配给一个数组,特别是每行2个,并且它们不是大值,而是只有小数点后6个值的纬度/长度。有时我可以有500行的列表,有时它可以有多达100,000行。当它超过大约4,000但是代码开始变得非常慢。我有一个显示进度的进度条,所以我可以看到它在分配值时呈指数级变慢。这是我的代码:
$aArray1 = FileReadToArray("\\miami\edx\requests\"&$FileName&"\Data\GIS\Meters.csv")
For $i = 2 to Ubound($aArray1)
$line = FileReadLine("\\miami\edx\requests\"&$FileName&"\Data\GIS\Meters.csv", $i)
$row_array = StringSplit($line,",")
$lattitude[$i] = $row_array[Ubound($row_array)-3]
$longitude[$i] = $row_array[Ubound($row_array)-2]
GUICtrlSetData($progress1, ($i/ubound($aArray1))*100)
GUICtrlSetData($Label2,Round(($i/ubound($aArray1))*100,1)&"% Complete")
Next
有谁知道为什么会这么慢?也许我每次都在重复不必要的步骤,这会减慢它的速度。我无法弄清楚。提前致谢。
答案 0 :(得分:0)
感谢巴拿马杰克,我想通了。我只使用了我制作的原始数组而不是读取每一行。我仍然不知道是什么减慢了它的速度,但是这就是修正它的原因:
$i = 2
$aArray1 = FileReadToArray("\\miami\edx\requests\"&$FileName&"\Data\GIS\Meters.csv")
Do
$row_array = StringSplit($aArray1[$i],",")
$lattitude[$i] = $row_array[Ubound($row_array)-3]
$longitude[$i] = $row_array[Ubound($row_array)-2]
GUICtrlSetData($progress1, ($i/ubound($aArray1))*100)
GUICtrlSetData($Label2,Round(($i/ubound($aArray1))*100,1)&"% Complete")
$i = $i + 1
Until $i = Ubound($aArray1)