前 言
起源
本書是根據(jù)郭健美、黃波從2021年秋天起在華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院開設(shè)的軟件系統(tǒng)優(yōu)化課程的講義總結(jié)而成的,該課程主要面向高年級本科生和低年級研究生講授軟件系統(tǒng)的性能優(yōu)化。
性能是衡量軟件系統(tǒng)質(zhì)量和競爭力的一個重要方面,也是軟件系統(tǒng)設(shè)計、開發(fā)和應(yīng)用過程中必須關(guān)注的一個基本屬性。如何在給定的硬件資源配置下提升軟件系統(tǒng)的性能,是數(shù)字化系統(tǒng)的設(shè)計和實(shí)現(xiàn)過程中必須思考和解決的問題,也是優(yōu)化利用軟硬件資源的有效途徑。
每一位卓越的軟件系統(tǒng)工程師、架構(gòu)師或研究人員都應(yīng)掌握軟件系統(tǒng)優(yōu)化的原理與技術(shù)。開設(shè)軟件系統(tǒng)優(yōu)化方面的課程是解決我國計算機(jī)系統(tǒng)卡脖子問題所需人才的有效措施。我們力求在訓(xùn)練相關(guān)人員解決實(shí)際問題的過程中圍繞優(yōu)化思維培養(yǎng)系統(tǒng)觀和工程能力,鍛煉邏輯思維、批判性思維和創(chuàng)造性思維。
內(nèi)容
本書包括18章,分為五個部分。第一部分包括第1章和第2章,作為緒論,先介紹一個性能優(yōu)化案例,再概述軟件系統(tǒng)優(yōu)化的方法論。第二部分包括第3~6章,主要介紹性能工程的基礎(chǔ)知識。第三部分包括第7~10章,介紹計算機(jī)體系結(jié)構(gòu)優(yōu)化的相關(guān)知識。第四部分包括第11~16章,介紹編譯優(yōu)化的相關(guān)知識。第五部分包括第17章和第18章,主要針對新興場景下的系統(tǒng)優(yōu)化技術(shù)進(jìn)行專題討論。
本書適合高年級本科生、研究生或相關(guān)工程技術(shù)人員學(xué)習(xí)。在使用本書講授課程時,建議讀者先學(xué)習(xí)如下課程:計算機(jī)程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計與分析、計算機(jī)系統(tǒng)。此外,如讀者能先修編譯原理、計算機(jī)組成與體系結(jié)構(gòu)等課程,就能更好地理解和掌握本書內(nèi)容。教師可根據(jù)課程要求、個人喜好、學(xué)生的背景和能力選講部分或全部章節(jié)。書中各章都給出了思考題,用于幫助讀者鞏固知識和引導(dǎo)讀者擴(kuò)展知識面。
讀者可以從https://solelab.tech/sso獲得與本書相關(guān)的更多資料,包括本書樣例程序的源代碼,以及軟件系統(tǒng)優(yōu)化課程的課件、上機(jī)作業(yè)、實(shí)踐項(xiàng)目等。
致謝
筆者在開設(shè)軟件系統(tǒng)優(yōu)化課程之初,著重參考了以下兩門課程的教學(xué)設(shè)計和內(nèi)容:麻省理工學(xué)院的MIT 6.172Performance Engineering of Software Systems、圣路易斯華盛頓大學(xué)的WUSTL CSE567MComputer Systems Analysis。這兩門課程對本書的內(nèi)容組織產(chǎn)生了重要影響,在此向這兩門課程的授課教師Charles E. Leiserson、Julian Shun、Raj Jain等表示感謝。
本書由郭健美、黃波先根據(jù)授課講義和學(xué)生反饋確定本書的整體結(jié)構(gòu)和各個章節(jié)的大綱,然后分工撰寫初稿,部分章節(jié)由Intel公司的林曉東、趙鵬編寫,華東師范大學(xué)系統(tǒng)優(yōu)化實(shí)驗(yàn)室的研究生劉通宇、梁文輝、李寧、廖浩宇參與了本書的編寫準(zhǔn)備工作。具體分工如下:第1章由郭健美編寫,第2章由郭健美、黃波編寫,第3~8章由劉通宇、郭健美編寫,第9章和第17章由郭健美編寫,第10章由趙鵬編寫,第11~16章由黃波編寫,第18章由林曉東編寫。李寧、廖浩宇協(xié)助整理了部分文本、插圖和參考文獻(xiàn)。全書的編寫通過審閱修改、交叉評審、逐步迭代的方式完成。
本書的成稿離不開Intel公司相關(guān)專家的支持,林曉東、趙鵬分別作為華東師范大學(xué)的兼職教授、兼職副教授于2022年開始參與軟件系統(tǒng)優(yōu)化課程的授課,并在工作之余編寫了相關(guān)章節(jié)。
感謝清華大學(xué)陳文光教授和上海交通大學(xué)陳海波教授在百忙中閱讀了本書初稿,提出了寶貴的修改意見,并幫忙作序。
感謝機(jī)械工業(yè)出版社的各位編輯,他們耐心細(xì)致的工作確保本書得以順利出版。
軟件系統(tǒng)優(yōu)化涉及的知識內(nèi)容廣泛,罕有人士對其眾多分支領(lǐng)域均有精深理解。由于筆者學(xué)識水平有限,書中難免存在錯謬,懇請讀者和同行批評指正,我們將不勝感激。