R2C & C2R Performance Profiling and Optimization

Overview

Micro Benchmark
Performance Profiling
Perf_Events tool
Caputure HotSpots
Performance Optimization
Avoid if-else branch
Inline function
Utilize CPU cache
Use AVX-512
First Row Second Column Pattern

Micro Benchmark

Implement one micro benchmark based on Google Benchmark
https://github.com/oap-project/gazelle_plugin/blob/main/native-sql-engine/cpp/src/benchmarks/row_to_columnar_converter_benchmark.cc

Google Benchmark is a C++ microbenchmark support library.
Read huge data, run iteratively.
Data preprocess once, code benchmark many.

Performance Profiling

Perf_Events
An event-oriented observability tool.
Part of the Linux kernel, under tools/perf.

Types of Events
Hardware Events: CPU performance monitoring counters.
Software Events: These are low level events based on kernel counters.
For example, CPU migrations, minor faults, major faults, etc.

Event Sampling
When the sampling period expires, it generates an interrupt.

Perf command
src/benchmarks/BenchmarkRowToColumnar --iterations 10  --threads 1  --file /mnt/DP_disk1/part-00095-356249a2-c285-42b9-8a18-5b10be61e0c4-c000.snappy.parquet --cpu 0 &
perf record -e cycles:ppp -C 0 sleep 5
perf report

在这里插入图片描述

add_compile_options(-g)

without -g
在这里插入图片描述

with -g

在这里插入图片描述
Find HotSpot

在这里插入图片描述
Zoom in IsNull() HotSpot

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值