有效地检查罕见的事件

时间:2015-02-01 19:27:59

标签: perl if-statement

我必须处理数百万条数据记录。数据记录在记录的开头有一个记录类型字符串。处理是记录类型相关的,但不需要“如果' elsif'类型,只需从哈希中选择一个数组切片掩码。

但是,按每百万分之一的顺序,我可能会遇到需要完全不同处理的记录类型。

我讨厌插入' if'测试此记录类型将返回' true'很少。

有什么建议吗?

由于

梅尔

1 个答案:

答案 0 :(得分:1)

答案是:不要担心。

CPU的速度远远高于磁盘IO的速度,因此if测试不会产生太大的影响 - 即使您忽略了分支预测算法。

SSD每秒将执行大约1500次IO操作,并从评论中引用Borodin:

  

合理的平均磁盘读取速度为每秒100MB。假设您的记录每个100字节,这意味着您可以每秒读取100万条记录,或每条记录1μs。 2011款英特尔酷睿i5处理器的运行速度为83,000 MIPS,也是如此   在读取一条记录所花费的时间内执行83,000条指令。在所有这些中避免一些测试和分支指令是毫无意义的。

基本上在任何代码中都是如此 - 你的IO存储几乎总是你的限制因素,因为CPU跟随Moore's law,但旋转磁盘的实际转速在15年以上并没有真正改变。固态硬盘是一种革命性的变革,但它们仍然太昂贵而不能用作大容量存储选项(即使这不是真的,它们仍然将成为持续存在的瓶颈数据传输/处理操作)。