在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ 3.8 Go 性能說明
4.7 strings 和 strconv 包
13.6 啟動外部命令和程序
?# 11.4 類型判斷:type-switch
12.1 讀取用戶的輸入
10.6 方法
12.2 文件讀寫
13 錯誤處理與測試
9.3 鎖和 sync 包
12.3 文件拷貝
?# 11.7 第一個例子:使用 Sorter 接口排序
?# 11.5 測試一個值是否實現(xiàn)了某個接口
6.4 defer 和追蹤
12.10 XML 數(shù)據格式
13.10 性能調試:分析并優(yōu)化 Go 程序
?# 11.1 接口是什么
2.2 Go 環(huán)境變量
2.6 安裝目錄清單
2.5 在 Windows 上安裝 Go
11.11 Printf 和反射
1.2 語言的主要特性與發(fā)展的環(huán)境和影響因素
9.0 包(package)
7.4 切片重組(reslice)
13.2 運行時異常和 panic
10.2 使用工廠方法創(chuàng)建結構體實例
12.8 使用接口的實際例子:fmt.Fprintf
2.4 在 Mac OS X 上安裝 Go
3.8 Go 性能說明
7.2 切片
8.0 Map
3.1 Go 開發(fā)環(huán)境的基本要求
5.6 標簽與 goto
6.10 使用閉包調試
9.5 自定義包和可見性
4.3 常量
?# 11.2 接口嵌套接口
6.5 內置函數(shù)
前言
10.8 垃圾回收和 SetFinalizer
2.8 Go 解釋器
13.7 Go 中的單元測試和基準測試
6.8 閉包
4.9 指針
13.1 錯誤處理
10.1 結構體定義
5.1 if-else 結構
6.6 遞歸函數(shù)
9.9 通過 Git 打包和安裝
2.7 Go 運行時(runtime)
10.7 類型的 String() 方法和格式化描述符
3.7 其它工具
9.6 為自定義包使用 godoc
11.12 接口與動態(tài)類型
13.3 從 panic 中恢復(Recover)
10.3 使用自定義包中的結構體
11.14 結構體、集合和高階函數(shù)
3.6 生成代碼文檔
9.2 regexp 包
4.1 文件名、關鍵字與標識符
?# 11.6 使用方法集與接口
7.0 數(shù)組與切片
7.1 聲明和初始化
12.11 用 Gob 傳輸數(shù)據
5.5 Break 與 continue
1.1 起源與發(fā)展
?# 11 接口(Interfaces)與反射(reflection)
6.9 應用閉包:將函數(shù)作為返回值
4.2 Go 程序的基本結構和要素
8.6 將 map 的鍵值對調
6.11 計算函數(shù)執(zhí)行時間
5.0 控制結構
10.5 匿名字段和內嵌結構體
4.6 字符串
3.0 編輯器、集成開發(fā)環(huán)境與其它工具
13.8 測試的具體例子
7.6 字符串、數(shù)組和切片的應用
8.4 map 類型的切片
3.9 與其它語言進行交互
7.3 For-range 結構
9.7 使用 go install 安裝自定義包
6.0 函數(shù)
9.8 自定義包的目錄結構、go install 和 go test
6.3 傳遞變長參數(shù)
13.9 用(測試數(shù)據)表驅動測試
11.9 空接口
8.1 聲明、初始化和 make
6.2 函數(shù)參數(shù)與返回值
9.11 在 Go 程序中使用外部庫
3.3 調試器
4.5 基本類型和運算符
?# 11.8 第二個例子:讀和寫
12.5 用 buffer 讀取文件
總結:Go 中的面向對象
11.10 反射包
12.7 用 defer 關閉文件
9.4 精密計算和 big 包
4.4 變量
6.1 介紹
13.4 自定義包中的錯誤處理和 panicking
12.4 從命令行讀取參數(shù)
9.10 Go 的外部包和項目
8.3 for-range 的配套用法
3.5 格式化代碼
10.4 帶標簽的結構體
7.5 切片的復制與追加
?# 11.3 類型斷言:如何檢測和轉換接口變量的類型
5.4 for 結構
4.8 時間和日期
2.3 在 Linux 上安裝 Go
12 讀寫數(shù)據
6.12 通過內存緩存來提升性能
9.1 標準庫概述
12.6 用切片讀寫文件
10 結構(struct)與方法(method)
8.5 map 的排序
12.9 JSON 數(shù)據格式
13.5 一種用閉包處理錯誤的模式
3.2 編輯器和集成開發(fā)環(huán)境
12.12 Go 中的密碼學
5.2 測試多返回值函數(shù)的錯誤
6.7 將函數(shù)作為參數(shù)
8.2 測試鍵值對是否存在及刪除元素
3.4 構建并運行 Go 程序
2.1 平臺與架構
5.3 switch 結構

3.8 Go 性能說明

根據 Go 開發(fā)團隊和基本的算法測試,Go 語言與 C 語言的性能差距大概在 10%~20% 之間( 譯者注:由于出版時間限制,該數(shù)據應為 2013 年 3 月 28 日之前產生 )。雖然沒有官方的性能標準,但是與其它各個語言相比已經擁有非常出色的表現(xiàn)。

如果說 Go 語言的執(zhí)行效率大約比 C++ 慢 20% 也許更有實際意義。保守估計在相同的環(huán)境和執(zhí)行目標的情況下,Go 程序比 Java 或 Scala 應用程序要快上 2 倍,并比這兩門語言占用的內存降低了 70% 。在很多情況下這種比較是沒有意義的,而像谷歌這樣擁有成千上萬臺服務器的公司都拋棄 C++ 而開始將 Go 用于生產環(huán)境才足夠說明它本身所具有的優(yōu)勢。

時下流行的語言大都是運行在虛擬機上,如:Java 和 Scala 使用的 JVM,C# 和 VB.NET 使用的 .NET CLR。盡管虛擬機的性能已經有了很大的提升,但任何使用 JIT 編譯器和腳本語言解釋器的編程語言(Ruby、Python、Perl 和 JavaScript)在 C 和 C++ 的絕對優(yōu)勢下甚至都無法在性能上望其項背。

如果說 Go 比 C++ 要慢 20%,那么 Go 就要比任何非靜態(tài)和編譯型語言快 2 到 10 倍,并且能夠更加高效地使用內存。

其實比較多門語言之間的性能是一種非常猥瑣的行為,因為任何一種語言都有其所擅長和薄弱的方面。例如在處理文本方面,那些只處理純字節(jié)的語言顯然要比處理 Unicode 這種更為復雜編碼的語言要出色的多。有些人可能認為使用兩種不同的語言實現(xiàn)同一個目標能夠得出正確的結論,但是很多時候測試者可能對一門語言非常了解而對另一門語言只是大概明白,測試者對程序編寫的手法在一定程度也會影響結果的公平性,因此測試程序應該分別由各自語言的擅長者來編寫,這樣才能得到具有可比性的結果。另外,像在統(tǒng)計學方面,人們很難避免人為因素對結果的影響,所以這在嚴格意義上并不是科學。還要注意的是,測試結果的可比性還要根據測試目標來區(qū)別,例如很多發(fā)展十多年的語言已經針對各類問題擁有非常成熟的類庫,而作為一門新生語言的 Go 語言,并沒有足夠的時間來推導各類問題的最佳解決方案。如果你想獲取更多有關性能的資料,請訪問 Computer Language Benchmark Game(詳見引用 27)。

這里有一些評測結果:

  • 比較 Go 和 Python 在簡單的 web 服務器方面的性能,單位為傳輸量每秒:

    原生的 Go http 包要比 web.py 快 7 至 8 倍,如果使用 web.go 框架則稍微差點,比 web.py 快 6 至 7 倍。在 Python 中被廣泛使用的 tornado 異步服務器和框架在 web 環(huán)境下要比 web.py 快很多,Go 大概只比它快 1.2 至 1.5 倍(詳見引用 26)。

  • Go 和 Python 在一般開發(fā)的平均水平測試中,Go 要比 Python 3 快 25 倍左右,少占用三分之二的內存,但比 Python 大概多寫一倍的代碼(詳見引用 27)。
  • 根據 Robert Hundt(2011 年 6 月,詳見引用 28)的文章對 C++、Java、Go 和 Scala,以及 Go 開發(fā)團隊的反應(詳見引用 29),可以得出以下結論:

    • Go 和 Scala 之間具有更多的可比性(都使用更少的代碼),而 C++ 和 Java 都使用非常冗長的代碼。
    • Go 的編譯速度要比絕大多數(shù)語言都要快,比 Java 和 C++ 快 5 至 6 倍,比 Scala 快 10 倍。
    • Go 的二進制文件體積是最大的(每個可執(zhí)行文件都包含 runtime)。
    • 在最理想的情況下,Go 能夠和 C++ 一樣快,比 Scala 快 2 至 3 倍,比 Java 快 5 至 10 倍。
    • Go 在內存管理方面也可以和 C++ 相媲美,幾乎只需要 Scala 所使用的一半,比 Java 少 4 倍左右。

鏈接