最近又看到一篇有趣的文章,如何快速的複製資料:memcpy
那就複製裡面的程式,順便驗證一下是否正確。
首先,先建立2個char的陣列。
my_memcpy複製的副程式,以1個byte來複製。
這是以前的寫法,寫個for回圈,讓陣列test_b = test_a。
這樣需要1208個指令時間
執行my_memcpy副程式
用1個byte複製,需1386個指令時間,似乎沒有比較快。
my_memcpy複製的副程式,以2個byte來複製。
再執行my_memcpy副程式。
用2個byte複製,需要827個指令時間。
my_memcpy複製的副程式,以4個byte來複製。
再執行my_memcpy副程式。
用4個byte複製,需要467個指令時間。
my_memcpy複製的副程式,以8個byte來複製。
再執行my_memcpy副程式。
用4個byte複製,需要287個指令時間。
順便比較一下float的陣列。
這是以前的寫法,寫個for回圈,讓陣列test_b = test_a。
這樣需要1688個指令時間
my_memcpy複製的副程式,以1個float,4個byte來複製。
再執行my_memcpy副程式。
用1個float複製,需要1706個指令時間。
my_memcpy複製的副程式,以1個long double,8個byte來複製。
再執行my_memcpy副程式。
用1個long double複製,需要1067個指令時間。
結論:用指標的方式,當複製的byte數是一樣的話,執行速度並不會比較快。但如果複製的byte數較高的話,可以省去較多的時間。