需要帮助!无法解决这个问题,我遇到了硬件限制 - 页 18

 

测试脚本和执行结果。

硬盘。

2014.08.22 21:16:43.584 sTest_ReadWriteBIN EURUSD,M1: 100000 secuences writed in 39.8 sec
2014.08.22 21:17:24.174 sTest_ReadWriteBIN EURUSD,M1: 4156 Mb loaded in 40.0 sec (103.9 MB/sec)

内存驱动器。

2014.08.22 21:22:15.170 sTest_ReadWriteBIN EURUSD,H1: 100000 secuences writown in 27.6 sec
2014.08.22 21:22:42.805 sTest_ReadWriteBIN EURUSD,H1: 在27.6秒内加载4158Mb(150.4 MB/sec)。

仍然没有印象。的确,现在的测试条件并不完全干净,电脑上有很多东西在运行。

我以后会再做的。

附加的文件:
 
komposter:
我怀疑你可以把读数换成WinAPI类似物,并使RAM磁盘的速度至少提高2-3倍。
 
komposter:

TheXpert:
顺便说一下,如果你知道每个序列的起点,你可以用二进制搜索来搜索所需的日期,因为交易是按时间排序的。

+1,谢谢你的主意。

你也可以应用插值搜索,这在这个任务中可能工作得更快。
 
TheXpert:
我猜想你会用WinAPI的模拟程序来代替阅读,并获得至少2-3倍的RAM磁盘的速度提升。

只有FileOpen 应该是慢的,而阅读应该是快的。但我要检查一下。

anonymous:
你也可以应用插值搜索,在这项任务中可能会更快。

很好,谢谢。

 
komposter:
...

仍然没有印象。

...

在C++中,它是通过fread到一个64K-128K的缓冲区来完成的,用你自己的解析器来解析会更好,因为scanf-types非常慢。
 
kazakov.v:
在C++中,这是通过fread到64K-128K的缓冲区完成的,解析最好用你自己的解析器,因为scanfs非常慢。

在C++中,如果没有解析器,你可以做到这一点。

把这个想法推10次--用另一个文件中的序列起始位置的值启动另一个文件,那么你甚至不需要在序列结构中存储交易的数量

 
marketeer:
既然这个问题相当学术化(看起来像是一个雇用程序员的问题),而且很多人都表示了兴趣,为什么不在输入数据描述的格式方面更严格地制定它,每个人都可以生成20G的测试数据并提交他们的实际解决方案?

+100

这项任务非同小可,但目前还没有任何一行代码。安德烈,这里有很多人感兴趣--制定任务,提供测试数据。让我们有一个体育节目。

 
C-4:

+100

这项任务非同小可,但目前还没有任何一行代码。安德烈,这里有很多人感兴趣--制定任务,提供测试数据。让我们来做一些体育节目。

任务已经确定。
 
Vinin:
任务已经确定。
需要测试数据+伪代码,有数据处理的一般原则。
 
为什么要通过数据库中的选项呢? 根据标准从历史上生成交易不是更好吗?