Go1.7让二进制文件变得更小(翻译)



Go1.7让二进制文件变得更小(翻译)

测试这个特性,我采用了一个更大的生产环境程序,jujud,其体积从94MB减小为67MB。

地址无关的二进制文件可以减小50%。地址无关的可执行程序(PIE)中,在只读数据段的指针需要动态重映射。因为新的类型信息格式通过段偏移单元代替了了指针,这样,每个指针节省了28个字节。

移除调试信息的地址无关的可执行程序对于移动开发者很重要,因为这是发布到手机端的程序。因为下载大体积的应用程序的用户体验差,所以体积减少对他们来说是个好消息。

未来的工作

一些运行时类型信息的改变没有赶上Go1.7版本冻结,但是希望会在1.8版本加入。这些会进一步减小程序体积,尤其是对地址无关的程序。

这些改变都是保守的,减小二进制文件的体积不会增加编译时间、启动时间、整体的运行时间以及内存使用量。我们会进行更彻底的做法来减小二进制文件的体积:upx工具可以把二进制文件的体积进一步压缩50%,代价是增加启动时间和潜在的内存使用量。针对非常小的系统(可能在钥匙挂上),我们会编译一个没有反射的Go,虽然还不确定这样一个有限制的语言是否是非常有用。在运行时中,当计算每个kb字节时,我们会使用稍微慢点但是更紧凑的算法。所有的这些需要在后续的开发周期中做更多的调研。



Read full article from Go1.7让二进制文件变得更小(翻译)


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts