我是性能至關重要的軟件包的首席開發人員。的表現表示軟件可以大大提高當某些設施齊備,如:Autoconf:默認的開箱即用優化與交叉編譯
- 軟件庫(如BLAS,LAPACK,...)對SSE,MMX,
- 支持...
我處於一種難以決定最明智的方法的情況。我看事情的方式,這是我的選擇:
- 確保可移植性和正確的交叉編譯:通過利用現有設施和可選強制用戶的使用-enable-X標誌等,這是必須明確使他們爲了可移植性,因爲構建平臺上可用的工具可能不會出現在目標平臺上。 PRO:可移植性和交叉編譯正常工作。 CON:新手用戶會忘記優化,並因此遭受性能損失。
- 爲新手用戶提供方便:在配置階段自動檢查庫和功能(如SSE)的可用性,並隨後使用所有可用的工具。 PRO:用戶可以毫無顧慮地獲得軟件的優化版本。 CON:不能保證可移植性(例如,如果主機有SSE且目標沒有交叉編譯,我不希望我的用戶進行交叉編譯,但死亡和稅收是生命中唯一的確定性)。
我目前傾向於選項2,因爲這是我期望大多數用戶欣賞。此外,迎合缺省行爲的新手可能更有意義。我知道這是便攜性方面的一個主要罪過。你們認爲最明智的做法是什麼?
我有什麼解決方案,我不知道我的困境?
瞭解新手的定義會有所幫助。部署到其他開發人員的軟件包,您希望知道這些事情與發送給公衆的軟件包不同。最終,我覺得這是一個沒有事實答案的問題,但如果「新手」真的意味着新手,我會傾向於傾向於開箱即用,保證。任何有足夠經驗的人都知道某些東西沒有足夠優化,可以將自己的部分弄清楚。 – ChrisCM 2013-05-03 19:26:26