 Borsh 安全高效的二进制序列化Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 执行速度 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark • 编译后的体积更小 • borsh 序列化后的二进制更精简 轻量级 序列化结果体积对比 Borsh 基本用法 Case Study0 码力 | 21 页 | 3.35 MB | 1 年前3 Borsh 安全高效的二进制序列化Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 执行速度 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark 执行速度 benchmark • 编译后的体积更小 • borsh 序列化后的二进制更精简 轻量级 序列化结果体积对比 Borsh 基本用法 Case Study0 码力 | 21 页 | 3.35 MB | 1 年前3
 使用硬件加速Tokio - 戴翔2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 2 4 6 8 10 12 14 16 18 20 MPMC Throughput Benchmark DLB_LibDLB Crossbeam Flume Number of Core Pairs 3 means 3 producer cores and 3 consumer cores • All are C bound in the evaluation scenario 1 2 3 4 5 6 7 8 0.1 1 10 100 MPSC Throughput Benchmark Series1 Series2 Series3 Series4 Number of Producer Cores Throughput / Relative Value DLB Tokio DLB-Assist Scheduler Design • Each processor has own run queue • DLB does balance Next Step • Do benchmark for different scenarios • Upstream • Optimize applicability • … Thank you !0 码力 | 17 页 | 1.66 MB | 1 年前3 使用硬件加速Tokio - 戴翔2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 0 2 4 6 8 10 12 14 16 18 20 MPMC Throughput Benchmark DLB_LibDLB Crossbeam Flume Number of Core Pairs 3 means 3 producer cores and 3 consumer cores • All are C bound in the evaluation scenario 1 2 3 4 5 6 7 8 0.1 1 10 100 MPSC Throughput Benchmark Series1 Series2 Series3 Series4 Number of Producer Cores Throughput / Relative Value DLB Tokio DLB-Assist Scheduler Design • Each processor has own run queue • DLB does balance Next Step • Do benchmark for different scenarios • Upstream • Optimize applicability • … Thank you !0 码力 | 17 页 | 1.66 MB | 1 年前3
 Lock-Free Atomic Shared Pointers Without a Split Reference Count? It Can Be Done!the data fit in cache? • Contention: How many threads operation on the same location? • We will benchmark the lock-free stack implementation, using different atomic Lock-Free Atomic Shared Pointers Without a Split Reference Count? It Can Be Done!the data fit in cache? • Contention: How many threads operation on the same location? • We will benchmark the lock-free stack implementation, using different atomic- ! struct Node { T t; if (p) return {std::move(p->t)}; else return {}; }38 Daniel Anderson -- danielanderson.net Benchmark setup (throughput) Machine setup: • 4x Xeon E7-8867 (72 cores, 144 hyperthreads) • 1TB DDR4 0 码力 | 45 页 | 5.12 MB | 6 月前3
 C++高性能并行编程与优化 -  课件 - 06  TBB 开启的并行编程之旅Google benchmark • 手动计算时间差有点太硬核了,而且只运 行一次的结果可能不准确,最好是多次运 行取平均值才行。 • 因此可以利用谷歌提供的这个框架。 • 只需将你要测试的代码放在他的 • for (auto _: bm) • 里面即可。他会自动决定要重复多少次, 保证结果是准确的,同时不浪费太多时间 。 运行结果 刚才的 BENCHMARK_MAIN 自动生成了一个0 码力 | 116 页 | 15.85 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 06  TBB 开启的并行编程之旅Google benchmark • 手动计算时间差有点太硬核了,而且只运 行一次的结果可能不准确,最好是多次运 行取平均值才行。 • 因此可以利用谷歌提供的这个框架。 • 只需将你要测试的代码放在他的 • for (auto _: bm) • 里面即可。他会自动决定要重复多少次, 保证结果是准确的,同时不浪费太多时间 。 运行结果 刚才的 BENCHMARK_MAIN 自动生成了一个0 码力 | 116 页 | 15.85 MB | 1 年前3
 Что нужно знать об архитектуре ClickHouse, чтобы его эффективно использоватьстрок SELECT passenger_count, avg(total_amount) FROM trips GROUP BY passenger_count NYC taxi benchmark Шардов 1 3 140 Время, с. 1,224 0,438 0,043 Ускорени е x2.8 x28.5 Запись в Distributed таблицу0 码力 | 28 页 | 506.94 KB | 1 年前3 Что нужно знать об архитектуре ClickHouse, чтобы его эффективно использоватьстрок SELECT passenger_count, avg(total_amount) FROM trips GROUP BY passenger_count NYC taxi benchmark Шардов 1 3 140 Время, с. 1,224 0,438 0,043 Ускорени е x2.8 x28.5 Запись в Distributed таблицу0 码力 | 28 页 | 506.94 KB | 1 年前3
 A Crash Course in Calendars, Dates, Time, and Time Zonesexecution time: // Get start time. auto start { high_resolution_clock::now() }; // Execute code to benchmark. double d { 0 }; for (int i { 0 }; i < 1'000'000; ++i) { d += sqrt(sin(i) * cos(i)); }0 码力 | 43 页 | 551.60 KB | 6 月前3 A Crash Course in Calendars, Dates, Time, and Time Zonesexecution time: // Get start time. auto start { high_resolution_clock::now() }; // Execute code to benchmark. double d { 0 }; for (int i { 0 }; i < 1'000'000; ++i) { d += sqrt(sin(i) * cos(i)); }0 码力 | 43 页 | 551.60 KB | 6 月前3
 C++高性能并行编程与优化 -  课件 - 01 学 C++ 从 CMake 学起旨在补充标准库没有的常用功能 6. bombela/backward-cpp - 实现了 C++ 的堆栈回溯便于调试 7. google/googletest - 谷歌单元测试框架 8. google/benchmark - 谷歌性能评估框架 9. glfw/glfw - OpenGL 窗口和上下文管理 10.libigl/libigl - 各种图形学算法大合集 fmt - 使用这个神奇的格式化库 •0 码力 | 32 页 | 11.40 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 01 学 C++ 从 CMake 学起旨在补充标准库没有的常用功能 6. bombela/backward-cpp - 实现了 C++ 的堆栈回溯便于调试 7. google/googletest - 谷歌单元测试框架 8. google/benchmark - 谷歌性能评估框架 9. glfw/glfw - OpenGL 窗口和上下文管理 10.libigl/libigl - 各种图形学算法大合集 fmt - 使用这个神奇的格式化库 •0 码力 | 32 页 | 11.40 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 性能优化之无分支编程 Branchless Programmingcom/p/53394807 • CMake 锐评家 https://www.coder.work/article/7298665 • 谷歌性能测试框架 https://github.com/google/benchmark0 码力 | 47 页 | 8.45 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 性能优化之无分支编程 Branchless Programmingcom/p/53394807 • CMake 锐评家 https://www.coder.work/article/7298665 • 谷歌性能测试框架 https://github.com/google/benchmark0 码力 | 47 页 | 8.45 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 07 深入浅出访存优化WITH_TBB 让源文件判断。 • 然后在 .cpp 文件里写 #ifdef WITH_TBB 包围住需 要用到 tbb 的部分,这样即使没有 tbb 的同学也能 正常编译其他没有 tbb 的 benchmark 。 • 毕竟微软的钱全用在买暴雪上了,没钱搞包管理器。 实战案例:矩阵乘法 • 分析访存规律: • a(i, j) 始终在一个地址不动(一般)。 • b(i, t) 每次跳跃 n 间隔的访问(坏)。0 码力 | 147 页 | 18.88 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 07 深入浅出访存优化WITH_TBB 让源文件判断。 • 然后在 .cpp 文件里写 #ifdef WITH_TBB 包围住需 要用到 tbb 的部分,这样即使没有 tbb 的同学也能 正常编译其他没有 tbb 的 benchmark 。 • 毕竟微软的钱全用在买暴雪上了,没钱搞包管理器。 实战案例:矩阵乘法 • 分析访存规律: • a(i, j) 始终在一个地址不动(一般)。 • b(i, t) 每次跳跃 n 间隔的访问(坏)。0 码力 | 147 页 | 18.88 MB | 1 年前3
共 9 条
- 1













