終於完成了影象處理庫的公升級,這個任務整整歷時一年,從演算法的預研到最後的實施,從組合語言的學習到指令集加速的實現,其中滋味自然是五味雜陳,從沒想過要放棄,也沒意識到遇到的問題竟然可以通過簡單的修改幾行**就能解決,從開始的生搬硬套,到中間的批量堆**,再到最後的**重構,我深深地體會到保持簡單的重要性。演算法,甚至於生活,化繁為簡,更需要功夫。
從技術的預研開始說起,其實任務的要求很簡單,讓程式更快一些,因為客戶反映現在的影象處理演算法速度太慢。那麼怎麼才能使演算法更快呢,兩種方式,其一,從演算法核心思想著手,盡量採用簡單且易於**實現的方法,即在演算法層面上進行優化;其二,在編碼實現上著手,盡力採用更適合編譯器優化的編碼方式,目前主要採用c語言來實現,c語言的是一門高階語言,編譯器需要將其翻譯為組合語言然後轉成機器語言才能使cpu執行,這個轉換過程顯然降低程式的效能,不如直接採用組合語言直接實現演算法,但是這種加速效果的提公升顯然使很有限的,無法達到客戶的期望,於是想到了採用simd指令集來對演算法加速,充分發揮cpu的效能。所謂窮盡cpu的手藝,不過如此。根據網友的說法,cpu指令集編碼可以達到數十倍的效能提公升,這正是客戶所需要的,也是我們所追求的,試想一下,原先一秒只能處理7幀,現在同樣的時間可以處理20幀,再也沒有這種效能的翻倍更能讓產品經理興奮了!
但是,前景是豐滿的,現實則是骨感的,周圍沒有人專門研究過這東西,甭說是指令集,單說彙編這東西,熟練掌握的人就不多,幸好有人還是知道些的,遇到問題還是很方便問的,不過話說回來,入門還需靠自己,這顯然是乙個艱難的過程。如果說經驗的積累只是乙個不可逾越的過程的話,那麼程式問題的排除和除錯則是乙個幾近考驗人耐性和定力的經歷了。掌握一門程式語言可能只需要乙個月,但熟練應用它則至少需要一年。
其次,乙個比較擰巴的過程則是對於彙編技巧的掌握只是很小一塊,卻要實現一些繁瑣甚至於重複的功能,於是乎堆**成了乙個比較簡單易用的選擇,但是這對於彙編技巧的掌握顯然沒有任何的益處,原因在於所謂的對**無非就是**的簡單拷貝,而其實根據後期的經驗來看這些簡單的**貼上除了增加**維護的難度之外還降低了**的可復用性,於是乎在**出現bug之後,不能不選擇唯一的一條路,那就是**重構,增加**的可復用性,刪除冗餘**顯然是逃不掉了。顯然**重構是利大於弊的,從修正後期測試遇到的bug來看,在定位程式問題之後,只需修改有問題的模組即可,而不需要像前期堆的**那樣每個演算法流程都要對此出問題的模組進行一遍修改,演算法模組的巧妙封裝和呼叫顯然是乙個編碼的必備技能。
我曾經聽一位大師級的程式設計師這樣稱讚到,「我通過刪除**來實現功能的提公升。」而法國著名作家兼飛行家antoine的說法則更具代表性,「只有在不僅沒有任何功能可以新增,而且也沒有任何功能可以刪除的情況下,設計師才能夠認為自己的工作已臻完美。」 某些時候,在軟體中根本就不存在最漂亮的**,最漂亮的函式,或者最漂亮的程式。我們所能完成的只是在時間和效能之間折中後的**而已,還遠遠談不上漂亮,甚至於簡潔。
開始的開始,我們在寫文件,最後的最後,我們在刪除編好的**,因為最後的測試遇到了各種各樣的問題,為了解決這些問題或者使問題盡量的少,我們所做的就是使**盡量簡潔,演算法的邏輯盡量簡單。受制於諸位能力有限,無法將**一次寫對,並盡量使任務不至於一而再的延期,於是刪除冗餘**成為了乙個手刃般的抉擇。需求的更改類似於颳風下雨,而程式要的承諾則類似於天氣預報,乙個是肯定會發生的,乙個是肯定不可靠的。
保持一顆簡單的心,平靜地解決各種問題,時間會磨平各種記憶,也就解決了這些問題,是為經驗也。我總希望尋求各種挑戰,解決各種問題,最大的快樂莫過於自己做的演算法應用到了產品中並實實在在地解決了客戶的問題。
關於工作與生活
普通人 我發現中國人的勵志和國外的勵志存在非常大的不同,中國的勵志比較鼓勵人立下大志願,臥薪嘗膽,有朝一日成富成貴。而國外的勵志比較鼓勵人勇敢面對現實生活,面對普通人的困境,雖然結果也是成富成貴,但起點不一樣,相對來說,我覺得後者在操作上更現實,而前者則需要用999個失敗者來堆砌乙個成功者的故事。我...
關於工作與生活
普通人 我發現中國人的勵志和國外的勵志存在非常大的不同,中國的勵志比較鼓勵人立下大志願,臥薪嘗膽,有朝一日成富成貴。而國外的勵志比較鼓勵人勇敢面對現實生活,面對普通人的困境,雖然結果也是成富成貴,但起點不一樣,相對來說,我覺得後者在操作上更現實,而前者則需要用999個失敗者來堆砌乙個成功者的故事。我...
關於工作與生活
不管你願意不願意,只要你工作了,就很難再將工作與生活徹底分開,兩者經常纏繞在一起,縱然帶來很多的煩惱,你依然無法擺脫這樣的境地。只是到了某一天,你要不放棄了生活,要不放棄了工作。工作累了,拿起孫振耀寫的 關於工作與生活 也不免的要感嘆一把,唏噓一把。然後基本還是按照自己的工作態度 生活方式進行著,你...