专栏首页Rust语言学习交流【Rust日报】 2019-09-09:glint 用Rust編寫的commit 提示工具

【Rust日报】 2019-09-09:glint 用Rust編寫的commit 提示工具

剖析 angr 的效能

angr 是樓主寫的一個程式,功能是記錄使用者花在每個程式的時間

最近樓主覺得這個程式跑的太慢了想來加速一下

發現這個程式會讓你在執行任何命令前先花個0.22秒做記錄

其實這個程式並不是真的需要更快,樓主主要用這個程式在手機上

記錄他手機執行各種程式的時間。

一開始他決定使用 cargo-profiler

他發現大部份時間用在記憶體配置,且很可能是在BTreeMap裡

然後再用 Linux perf 跑看看,發現分析結果與 cargo-profiler 相同

再用火焰圖跑看看

發現augr只是因為需要加載的檔案變多而變慢!

在這一點上,樓主決定花點時間調查問題來修復它。他添加了一些代碼來追踪加載時間,

這時的樓主想了很多方法要來優化檔案加載數量過多的問題。

在進行了一些更麻煩的調查後,樓主確定程式的大部分時間都在執行,而不是加載文件。

最後他發現了主要原因在 clone ,樓主很大量的使用了clone

在做了必要的改動,減少了大量的clone之後,效能得到了提升

優化到了 0.02 秒!

剖析性能很有趣!在這種情況下,只需進行兩個簡單的更改並獲得10倍的改進。

本來樓主認為需要各種瘋狂的緩存系統才能讓augr更快。但並不需要那樣的東西!

Read more

glint 用Rust編寫的commit 提示工具

可以更智慧的送交git

Read more

為什麼 "??‍♂️".length == 7 會對

樓主對unicode與emoji的字串長度做了深度討論

首先比較不同語言得到的長度

原因是 UTF-32 UTF-16 UTF-8 所造成的

$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> len("??‍♂️") == 5
True
>>>
$ cargo new -q length
$ cd length
$ echo 'fn main() { println!("{}", "??‍♂️".len() == 17); }' > src/main.rs
$ cargo run -q
true

Read more

將Rust作為第一個學習的編程語言是否太狂了?

這個問題在reddit蠻多人討論的,所以也列一下

大多數Rust開發人員都是先學習了其他語言

Rust將很多語言的概念結合在一起,當你知道其他語言中存在的問題時,這些概念很有意義。

但這是因為Rust不是我們第一個學的語言

每個語言有自己擅長的特點,Rust的確不好學習

大部份的初學者如果不要挫折感太重,

還是建議從腳本語言開始 ex. javascript, python, lua

Read more

有沒有人願意幫Rust實現一個GCC的前端實作?

GCC 的開發者 Jacob Lifshay,覺得用Rust的程式取代 GCC自己的C是一個可行的方向

過去有@redbrain的寫過的gccrs 18是rust 1.0,但已經太舊了

如果有開發者願意幫忙,請聯絡 Stallman

這是一個Rust影響GCC的好機會

有實力又有興趣的大佬可以參考

Read more

本文分享自微信公众号 - Rust语言学习交流(rust-china),作者:damody

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rust日报】 2019-05-13:Rust - 后40年的语言

    特点是使用了GCCJIT的静态语言,也就是libgccjit库,它提供了C接口,社区里也有它的Rust绑定库。

    MikeLoveRust
  • 【Rus项目推荐】Rust search extension 0.8发布!快速搜索Rust文档、属性和库的浏览器插件

    Rust Search Extension 是一款可以在地址栏快速搜索Rust文档、crates、内置属性和错误码等的浏览器插件,支持Chrome和Firefo...

    MikeLoveRust
  • 【Rust日报】2019-09-11:Cloud Hypervisor - Intel 旗下的虚拟机监视器

    Read More: https://www.techrepublic.com/article/the-rising-programming-languages...

    MikeLoveRust
  • 【译】添加图像转换类库

    如果你已经有了一个图像转换的想法,希望在应用中使用,可以花上几分钟的时间,了解一下picasso-transformations这个三方类库。它是一个提供了各种...

    小鄧子
  • 用python实现接口测试(一 、使用POST和GET请求api)

    相信大家都知道,用Python来做接口测试,使用的方法很多,如POST、GET等方法请求API参数。

    用户6367961
  • 史上最全!计算机科学领域顶会最佳论文大合集:微软研究院最多,清华排24 | 资源

    最近,计算机科学领域的一份硬核资源更新了,收罗了自1996年以来这一领域的顶级学术会议最佳论文,堪称史上最全。

    量子位
  • 爬了菊姐的两万条评论,竟发现菊粉都是这样的人!

    张俊红
  • python接口自动化26-发xml格式post请求

    post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种)

    上海-悠悠
  • 第一次买 iPhone,X 和 8 哪个更好?(在线等,急!)

    但能想到摩尔定律的人不多。摩尔定律是由 Intel 名誉董事长戈登·摩尔(Gordon Moore)经过长期观察发现得之。它指 IC 上可容纳的晶体管数目,约每...

    知晓君
  • python接口自动化(四十一)- 发xml格式参数的post请求(超详解)

      最近在工作中,遇到一种奇葩的接口,它的参数数据是通过xml,进行传递的,不要大惊小怪的,林子大了什么鸟都有,每个人的思路想法不一样,开发的接口也是各式各样的...

    北京-宏哥

扫码关注云+社区

领取腾讯云代金券