• 【Rust日报】2022-08-02 hypher 将30种自然语言塞到1.1M空间内


    hypher 将30种自然语言塞到1.1M空间内

    这篇博文是关于hypher的,一个用于Rust的连字符解析库。

    作者正在开发一个名为Typst的纯rust实现的 LaTeX替代品。为了获得与 LaTeX 相同的解析结果,Typst 需要对连字符的支持。在 docs.rs上的快速搜索显示,真正相关的库只有一个,恰好就叫 hyphenation。这个库有很多功能,支持很多语言。然而,它也有相当大的二进制开销(2.8MB)。虽然可以在运行时加载模式文件,但单独分发模式文件显然比直接嵌入它们要复杂得多。除此之外还遇到了一些因为频繁加载导致的性能问题,

    于是作者决定建立一个新的crate,目标如下。没有分配,在运行时没有加载,更少的二进制开销和最小的依赖性。最终实现了将30种自然语言的音节解析塞到了1.1MB的空间内。

    3b104b3edd4b0fa6c830c1a65d439c03.png

    ReadMore: https://laurmaedje.github.io/posts/hypher/

    flashmap 一个无锁的并发安全的 hashmap

    一个无锁、部分无等待、最终一致、并发安全的 hashmap。极其快速的读取的代价是,当一个写被执行时,所有的读线程只有在完成他们的最后一次读并开始一个新的读时才会观察到这个写。

    flashmap 是为读取远远大于写入的场景而优化的,适合使用的情况包括:

    • 偶尔插入/删除的高频率读取

    • 通过内部可变性对现有条目进行高频率的修改,并偶尔的插入/删除

    • 高频读取,另一个线程执行适度的写入数据

    不宜 flashmap 的情况包括:

    • 频繁的、小规模的写入,不能分批进行

    • 来自多个线程的并发写访问

    ReadMore: https://github.com/Cassy343/flashmap


    From 日报小组 Koalr

    社区学习交流平台订阅:

    • Rustcc论坛: 支持rss

    • 微信公众号:Rust语言中文社区

  • 相关阅读:
    二叉树的深度
    最真实的大数据SQL面试题(一)
    亚马逊云科技Build On学习心得
    servlet中doGet方法无法读取body中的数据
    (四)stm32之通信协议
    [附源码]计算机毕业设计springboot电子相册管理系统
    Apache Hudi 负载类Payload使用案例剖析
    Visual Studio Code <1.71.1 权限提升漏洞
    ESP8266-Arduino编程实例-CCS811数字气体传感器驱动
    2023高教社杯 国赛数学建模C题思路 - 蔬菜类商品的自动定价与补货决策
  • 原文地址:https://blog.csdn.net/u012067469/article/details/126132567