2015-05-09 26 views
3

我有一個C編程任務,它涉及儘可能優化代碼。我已經在互聯網上讀了一些關於這方面的知識,並且發現了諸如使用case而非if,通過指針而不是值等。C編程優化和處理器擴展

我想問的是爲什麼要知道處理器可用的擴展,可以幫助我優化我的代碼?我知道SSE和AVX在機器上可用,但作爲程序員,這對我意味着什麼?

關於我的上述問題,我發現Intel Intrinsic Guide,我認爲這與處理器擴展有關。在使用這些功能的性能方面,與其他C功能相比有什麼優勢。例如會使用_mm_sqrt_psxmmintrin.hsqrt更快從math.h

回答

2

這個想法是讓每個CPU優化庫(SSE,AVX等),並調用類似_may_i_use_cpu_feature()來動態確定哪些功能在運行時可用,併爲CPU加載「最佳」實現。

對於想要使用sqrt()的可移植代碼 - 某些運行時庫已經優化了足夠好的實現。如果您想要在特定平臺上完全控制並最大限度地提高性能,並且不關心可移植性,則可以編寫手動優化程序集(或使用內在函數)。

無論如何,通過更好的算法可以獲得大多數性能...