既然编译器可以判断一个函数是否适合 inline,那还有必要自己加 inline 关键字吗?
作者:雷鹏链接:https://www.zhihu.com/question/53082910/answer/2770827322来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。编译器的 inline 是为了让程序员与编译器互相配合,改善性能的机制,编译器确实可以判断函数是否适合 inline,最简单的例如 getter/setter。然而,inline 是否比不 i
ToplingDB 的序列化框架:优化到极致
ToplingDB的分布式 Compact中 Client-Server 交互,使用了topling-zip中的序列化框架,该序列化框架初版完成于 2006 年,后来命名为 febird 库在 google code 上开源,再后来 google code 停止服务,febird 迁移到 github,有段时间重命名为 nark,之后重命名为 terark,目前 topling-zip 中代码的
C++ 序列化与 RPC
ToplingDB 的 分布式 Compact 中 Client-Server 交互,使用了 topling-zip 中的序列化框架,该序列化框架初版完成于 2006 年,随后基于该序列化框架,实现了一个 RPC 系统。后来整个库命名为 febird 库在 google code 上开源,再后来 google code 停止服务,febird 迁移
MyTopling 分布式 Compact(三):PropertiesCollector
一、背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 和 MyTopling 目前都已经开源。ToplingDB 的一
ToplingDB 的序列化框架:简介
ToplingDB 的 分布式 Compact 中 Client-Server 交互,使用了 topling-zip 中的序列化框架,该序列化框架初版完成于 2006 年,后来命名为 febird 库在 google code 上开源,再后来 google code 停止服务,febird 迁移到 github,有段时间重命名为 nark,之后重命
ToplingDB 的序列化框架:性能
ToplingDB 分布式 Compact 中 Client-Server 交互,使用了 topling-zip 中的序列化框架,该序列化框架初版完成于 2006 年,后来命名为 febird 库在 google code 上开源,再后来 google code 停止服务,febird 迁移到 github,有段时间重命名为 nark,之后重命名为 tera
如何用C++实现简单的序列化/反序列化库?
C++ 拥有所有其它语言都不具备的优势:在保持高度抽象的同时达到极高的性能。然而要实现这一点并不容易,需要对 C++ 有深刻的理解和灵活的运用,作为序列化/反序列化库,C++ 的这个优势就是一个耀眼的亮点。十几年以前,我就写过这样一个库:最便捷、最强大、速度最快的 C++ 序列化框架作者: rockeet发表日期: 2008年11月07日分类: C++序列化评论: 11 条阅读次数: 6,336
ToplingDB:怎样展示任意 WebView
github 原文链接:AnyPlugin · topling/rockside Wiki作者:toplingToplingDB 是 topling 开发的 KV 存储引擎,fork 自 RocksDB,进行了很多改造,也修改了很多 RocksDB 的 bug,其中有几十个修改也给上游 RocksDB 发了 Pull Request,让即便不使用 ToplingDB 的用户也能受益Top
MyTopling 分布式 Compact(二):CompactionFilter
一、背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 和 MyTopling 目前都已经开源。ToplingDB 的一
Topling 又双叒叕送福利啦!!!
免费试用 MyTopling 还有超多好礼送哦MyTopling 是拓扑岭开发的兼容 MySQL 的云原生数据库,已经在 GitHub 开源。活动内容:使用 MyTopling 提出 bug、修复 bug活动奖品:Apple Watch Series 3、CHERRY 机械键盘、U盘奖励规则:1、提报 bug 可获得 U盘一只2、修复宕机 bug 可获得 CHERRY 机械键盘一个3、修复数据错误
MyTopling sysbench 测试报告
MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。本测试报告发布时,MyTopling 也同时开源,MyTopling 下层的 ToplingDB 早已开源,To
出于什么样的原因,诞生了「协程」这一概念?
协程的理论模型是“有多个入口的带状态的函数”,通常我们把带状态的函数叫做“闭包”,所以协程也就是“有多个入口的闭包”。所以相比“闭包”,协程是一个更加“通用”的概念。在现实世界中,我们使用协程的主要目的是把代码转化为对人更友好的形式,有两种典型的应用场景:作为 generator,来生成序列用顺序代码实现 IO 多路复用:在原本需要阻塞线程的地方,切换到同一线程的其它协程举例来说:1. 作为 ge
Topling 人性化&可观测 Demo 演示页
Todis 监控Todis 提供了人性化的,可观测的监控页面,分别是 Grafana 监控和引擎观测 Web。这对于实时掌握数据库状态、调优、解决 bug 等非常有用。1. Grafana 监控实例演示: http://todis-demo.aliyun.db.topling.cn:3000/监控页面,除去普通指标,以及直方图指标的 P50、P90、P99 等等,我们还做了直方图全域展示
多线程fork,子进程执行哪些函数是安全的?
我们最近正好遭遇了 fork-unsafe 的 localtime/localtime_r,在这里跟大家分享一下:(一)背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 早已开源,MyTopling
C++11有了lambda后bind还有多大意义?
lambda 是语言层面的 feature,功能强大,性能高,而 bind 在很多时候使用起来更简洁。在现实中,至少有一种情况,一定不要使用 bind:把 lambda 当作 std::function 使用时!在 MySQL 源码中,有这样一段代码:void handler::ha_statistic_increment(ulonglong System_status_var
记 MyTopling 分布式 Compact 触发的 glibc bug
(一)背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 早已开源,MyTopling 也将于近期开源。(二)现象:分布式 Compact 超时大家可以先参考《
MyTopling Query Plan 的改进 (records_in_range)
(一)背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 早已开源,MyTopling 也会于近期开源。(二)rocords_in_rangeMySQL 查询规
MyTopling 索引:双数组 DoubleArray Trie Cache
(一)背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 早已开源,MyTopling 也会于近期开源。(二)MyTopling 索引结构MyTopling 索
MyTopling 中的 iterator 缓存
(一)背景MyTopling 是基于 ToplingDB 的 MySQL,分叉自 MyRocks,ToplingDB 则分叉自 RocksDB,兼容 RocksDB 接口,从而 MyTopling 可以复用 MyRocks 的大部分成果。ToplingDB 早已开源,MyTopling 也会于近期开源。(二)sysbench 基准测试sysbench是一个模
MultiGet IO 并发在 ToplingDB 中的协程实现,以及在 MyTopling 中的落地应用
(一)背景三年前,我用 Fiber(协程) 实现了 TerarkDB 中 MultiGet 的 IO 并发,因为 TerarkDB 分叉自 RocksDB 5.18,其 MultiGet 实现简单直接,所以我可以用 10 行代码就对其完成 Fiber(协程) 改造,并获得数量级的性能提升。但是在 ToplingDB 中,为了充分借助社区力量,吸收社