2010年2月23日 星期二

[轉錄] Gallery of Processor Cache Effects

分享一篇文章:Gallery of Processor Cache Effects

作者 Igor Ostrovsky 在  Microsoft Microsoft's Parallel Computing Platform team 服務。這篇文章透過 C# 七個實作來講述 Processor cache 的影響。測試程式簡短但切中要害,適合作為瞭解 cache 的入門。下面引用一些有趣的例子,希望勾起大家的興趣:

  1. 下面的 code, loop1 和 loop2 的效能差異會是 1/16 嗎?
    int[] arr = new int[64 * 1024 * 1024];

    // Loop 1
    for (int i = 0; i < arr.Length; i++) arr[i] *= 3;

    // Loop 2
    for (int i = 0; i < arr.Length; i += 16) arr[i] *= 3;



  2. 下面的 code ,loop1 和 loop2 跑得一樣快嗎?



    int steps = 256 * 1024 * 1024;
    int[] a = new int[2];

    // Loop 1
    for (int i=0; i<steps; i++) { a[0]++; a[0]++; }

    // Loop 2
    for (int i=0; i<steps; i++) { a[0]++; a[1]++; }




一些外國鄉民的討論:http://www.reddit.com/r/programming/comments/ax1nv/gallery_of_processor_cache_effects/



P.S. 在 a 哥面前班門弄斧了!!