• 【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语言中文社区

  • 相关阅读:
    基于bat脚本的前端发布流程的优化
    【iOS】nil、Nil、NULL、NSNull的区别
    Rust 从入门到精通09-模式解构
    JS十大设计模式(2/2)
    Positive Technologies 在迪拜宣布与地区网络安全解决方案提供商开展合作
    基于SSM的住院病人监测预警信息管理系统毕业设计源码021054
    vivado产生报告阅读分析14-时序报告10
    【JavaWeb】-- idea下使用TomCat新建javaweb项目
    Linux编译器-gcc的使用
    快速排序算法
  • 原文地址:https://blog.csdn.net/u012067469/article/details/126132567