Category: 翻譯

  • 測所翻譯 – Testing on the Toilet: What Makes a Good Test?

    原文網址:https://testing.googleblog.com/2014/03/testing-on-toilet-what-makes-good-test.html by Erik Kuefler 對於程式的正確性驗證來說,單元測試 (Unit tests) 是一個非常重要的工具。不過,撰寫好的測試遠比只驗證程式正確性還要重要 ─ 好的單元測試要有某些特徵來讓其易於閱讀與維護。 好測試的其中一個特徵是清晰 (Clarity)。 清晰的意思是指一個測試程式,應該被當作是一個易於人類閱讀的文件,描述其正在測試的 API 功能。 測試本身不應該直接介入實作的細節。一個類別的測試名稱,應該要能夠說明這個類別的用途;而他的測試應該被當作是如何使用這個類別的範例。 另外兩個重要的特徵是完整性 (completeness) 與精簡性 (conciseness) 一個測試在包含所有讓你了解其用途的資訊時為完整,以及沒有包含任何會讓你分心的資訊時為最精簡。 下面這個測試範例在並沒有剛剛提到的兩個重要特徵: @Test public void shouldPerformAddition() { Calculator calculator = new Calculator(new RoundingStrategy(), “unused”, ENABLE_COSIN_FEATURE, 0.01, calculusEngine, false); int result = calculator.doComputation(makeTestComputation()); assertEquals(5, result); // Where did this number come from? } 許多會分散注意力的資訊被放入建構子中,且整個測試中最重要的部份被隱藏在一個 helper method…

  • Pipeline Speak, Part 2: The Second Part of the Sandy Bridge Pipeline 中文翻譯

    Pipeline Speak, Part 2: The Second Part of the Sandy Bridge Pipeline 中文翻譯

    原文:https://software.intel.com/en-us/blogs/2011/12/01/pipeline-speak-part-2-the-second-part-of-the-sandy-bridge-pipeline 管線後端 The Back-End 管線的後端負責執行從前端產生的微指令。為了要讓後端的資源能夠有效的被利用,後端使用自己的 bookkeeping system 來追蹤每一個微指令,其所需資料 [data requires] 以及執行狀態 [exectes status]。然後它將以任何順序來執行微指令 ─ 根據微指令的所需資料什麼時候全部準備完成以及是否有可用的執行資源。微指令的 bookkeeping 以及排程可以說非常的複雜,而且需要許多專用的隊列結構。當有些隊列結構已經滿了,也就是後端不能在從前端接收新的微指令 ─ 在 Sandy Bridge 最佳化方法中,我們稱這種情況做 ” back-end bound pipeline slots”。 後端持續在追蹤的執行資源 [ execution resources] 稱做執行單元 [execution units]。每個 microarchitecture 可能會有稍微不同的 Layout 以及不同的可用執行單元。這些執行單元是在處理上處理特定功能的邏輯組件,像是加法、除法、邏輯位移、從記憶體讀取等。當微指令使用完執行單元以及所有資料都已經讀取或儲存完畢,我們稱他們已經 “退休” [retired] ─ 這表示微指令已經完成在管線該做的工作。這些微指令絕對不會再被顯式的被轉換回指令 [instructions]。而一個指令被 “退休” 則代表所有的其產生的微指令都已經 “退休”,不過這只是個抽象化的表達方式來說明管線後端是如何處理微指令而已。   了解一點處理器的微架構,包括管線的基礎知識,在效能分析上可以說非常的有幫助。特別是在 Intel Sandy Birdge 架構,因為,第一次在 x86 處理器上,performance events 可以從一個內聚的方法…

  • Pipeline Speak: Learning More About Intel  Microarchitechture Codename Sandy Bridge 中文翻譯

    Pipeline Speak: Learning More About Intel Microarchitechture Codename Sandy Bridge 中文翻譯

    中文翻譯前言 為了理解 perf 的輸出意義[1],必須要了解 CPU Microarchitecture。如果你用 perf stat -d gzip file1 這個方式來輸出,你會發現到輸出中有加粗這個部份: ➜ /tmp perf stat -d gzip files Performance counter stats for ‘gzip files’: 6990.942695 task-clock:u (msec) # 0.996 CPUs utilized 0 context-switches:u # 0.000 K/sec 0 cpu-migrations:u # 0.000 K/sec 112 page-faults:u # 0.016 K/sec 22,653,310,816 cycles:u # 3.240 GHz (33.32%) 9,561,514,420 stalled-cycles-frontend:u #…

  • 2016-08-01 翻譯 kernel OODP part2

    2016-08-01 今天在做啥 Freja Beha Erichsen, by Christopher Peterson 翻譯 今天持續在 hackmd.io 上翻譯 Object-oriented design patterns in the kernel, part 2  成中文版。透過這篇文章,讓我一步一步去了解 kernel 中的物件導向狀況以及各種實作與歷史,不得不說作者功力非常了得。 翻譯的同時,有用到這些資源,像是: C99 spec, 為了翻譯去看 C99 spec 也是很正常的事情吧? LXR,the linux cross referencer,用來看某個版本的 code 的工具 POSIX Thread 透過 llnl.gov 給的 pthread tutorial 了解 pthread 的實作,從建立 pthread 到 mutex, condition variables 等,這個網站的好處是他有附上練習,透過練習可以更進一步的去觀察 pthread 的機制怎麼運作,pthread 的另外一個介紹可看這個 Multithreaded Programming (POSIX pthreads…

  • Object-oriented design patterns in the kernel, part 1 中文翻譯

                Object-oriented design patterns in the kernel, part 1                                Neil Brown                               June 1, 2011                …