bvar如何实现高性能多线程统计计数器
bvar是什么?
bvar是百度开源贡献给Apache的多线程环境下的计数器库。 通过它可以统计计数器、最大值、最小值、windows一段时间累加、除以秒数就是每秒,还有时延、分位值等等。
bvar是百度开源贡献给Apache的多线程环境下的计数器库。 通过它可以统计计数器、最大值、最小值、windows一段时间累加、除以秒数就是每秒,还有时延、分位值等等。
我每天早上都会打开Github的Trendings板块,了解最新的动态,我相信这是个还不错的习惯。遇到感兴趣的项目我会打开看看源码,学习一下大佬们的写法和实现。
修改github.com/xxx/yyy链接为github1s.com/xxx/yyy,就可以在浏览器打开vscode类似界面阅读代码了。
今天分享的是quill,一个异步低延迟的高效日志库实现。
c++ std::sort函数是经常被使用到的,但是不知道大家注意没有,定义的Compare函数是需要满足一定条件的。这个条件就是:strict weak ordering。
采用server方式推理一个模型,会崩溃。
采用pipeline方式推理一个模型,不会崩溃。
不管是server还是pipeline,都调用了同样的generate()方法,但是为什么会产生不同的结果?传递的参数不同。
文章介绍了如果实现一个轮转代码的neovim插件,简单的策略就是a->b, b->c, …, z->a。 试想一下你的代码经过轮转以后会是怎么样,轮转一个位置、n个位置呢?配上快捷键,在别人看你代码的时候,轮转一下字符,向左转了还能支持向反方向转回来。需要实现如下功能:
听起来还有点传统的代码加密算法的意思,旋转加密或者叫轮转机加密。
上一篇讲了如何通过nvim-oxi实现一个neovim插件nvim_rotate_chars来轮转字符,这一篇通过采用相关技术实现了一个unicode字符表示转换成汉字显示。这些工具在日常开发和工作中都可以用到,自己实现一个也可以学到新东西练练代码手感。
之前在文章unicode编码和utf-8转换不同语言实现的差别?以及locale杂谈中讲到过由于系统的locale设置不正确,遇到unzip解压出来的中文文件名称都变成了unicde的16进制字符表示。当然也介绍了如何使用python、c++以及rust实现转换。在这里我们将实现移植到了neovim插件中,打开文件一键转换。
pin_memory就是在RAM上固定了一块内存,这个内存范围是被锁住的。pin这个单词很形象,很像rust中pin含义,用钉子把钉住,这个内存就不会释放,是安全的意思。GPU在传递数据的时候,就可以用DMA的方式,高效传输数据。否则,普通的cpu_memory,就会swap掉,然后访问的时候缺页中断,这样速度肯定就慢了很多。