title: 在C#中把200万行数据写入一个List<T>居然要十几分钟？
desc: 声明一个list<br><div class
topic: 即时编译（JIT）
content: 抛开这么写代码对不对另说，造成巨大时间差异的主要原因应该是写入内存速度和icache的hit rate的问题。你这一行代码看起来还挺复杂的，至少几十个instruction，200万行的代码编译的时候会产生好几亿个instruction，光写入内存就要写至少几百M，这个开销本身就非常非常大了。然后在读取instruction的时候，因为一直要读新的PC，所以icache基本一直在miss，这个开销也非常大。而这两个额外开销对程序运行速度的增加超过了instruct
answerer_tags: 加州码农一只