![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 71
Ahxing1985
这个作者很懒,什么都没留下…
展开
-
STL库的ranges
C++20的库通过引入范围和视图的概念,不仅丰富了STL的功能,也引领了更现代、高效、表现力强的编程实践。它鼓励开发者采用更函数式和声明式的编程风格,同时保持了与传统STL的兼容,标志着C++在数据处理领域的一大进步。原创 2024-06-01 22:21:47 · 911 阅读 · 0 评论 -
mmap访问内存方式
解释基于mmap的IO操作在某些场景下为什么极为高效。原创 2024-03-17 22:46:44 · 368 阅读 · 0 评论 -
`static_cast` caustion
【代码】【无标题】原创 2024-03-17 22:37:20 · 318 阅读 · 0 评论 -
Linux性能调优技术概览
这里的Linux性能调优主要是关于Linux系统上程序的性能跟踪,因为只有收集到足够的准确的性能数据才能找到程序和系统的性能瓶颈。Linux性能调优的原理、框架、工具。下面一一介绍。原创 2023-12-14 10:37:36 · 953 阅读 · 0 评论 -
一种高效且节约内存的聚合数据结构的实现
在特定的场景中,特殊定制数据结构能够得到更加好的性能且更节约内存。原创 2023-09-10 21:49:38 · 453 阅读 · 0 评论 -
cmake简略使用介绍
构建系统对于一个大型项目至关重要,本身就可以看成大项目中的一个子项目。cmake是C++生态环境中常用的构建工具。这里简单介绍一下cmake的用法。原创 2023-09-10 21:25:30 · 526 阅读 · 0 评论 -
对于同一个成员方法分别定义左值和右值的实现版本
有时候需要对同一个成员方法定义不同的实现,比如如果当前`this`右值时,可以用一些移动语义来优化性能。这时候需要通过添加函数的限定符来为this为右值时定义专门的方法实现。原创 2023-09-10 21:12:39 · 53 阅读 · 0 评论 -
C++ concept的概念和使用
`concept` 这套语法优化了模板编程,替代了原来的SFINAE编程模式,通过给模板类参数加入限制条件,使得代码可读性更强、编译更快、错误提示更容易理解。原创 2023-09-10 20:58:08 · 494 阅读 · 0 评论 -
如何提高程序性能
本文主要探讨提高程序性能的途径、方法和最佳实践。从“尽可能利用缓存”和“尽可能利用多核”两方面入手提升程序性能。原创 2022-10-09 21:28:22 · 695 阅读 · 0 评论 -
多线程与同步
多线程并行执行能够大大提升程序运行效率,但是也要注意随之带来的线程间同步问题,避免竞态条件(“Race Condition”)引起的难以发现的bug。这篇总结一下线程的创建和销毁、等待和恢复、加锁和解锁、锁的类型以及在某些情况下可以替代锁的原子操作。...原创 2022-06-14 19:42:09 · 467 阅读 · 0 评论 -
C++编译器选择是否自动生成代码的背后逻辑
编译器会为class和struct(实际上两者在C++中是一回事)自动生成构造函数、赋值操作符函数和析构函数。如果不是这样,那么开发者就必须自己写一些枯燥冗余的代码。然而编译器并不总是生成这些默认代码,当它觉得它无法生成正确的代码时,它就会拒绝生成默认代码原创 2022-05-10 16:44:59 · 538 阅读 · 0 评论 -
用指针低三位存放额外信息的优化方法
在8字节对齐的情况下指针的低三位都是0,在某些情况下我们需要维持跟指针对应的额外信息,例如标志位,但是又不想为此创建一个结构体,那就可以利用指针的低三位来存储额外信息。原创 2022-04-30 23:30:01 · 275 阅读 · 0 评论 -
实现特定场景下高性能的HashMap
C++标准库的某些场景下的效率问题在下面的场景中,C++标准库的unordered_map、map、multiset、unordered_multiset效率并不高。分组重复次数计数有一亿条记录,记录有两列:group_id,attribute,并且记录已经按照group_id排了序。要求计数每个group_id对应的行的attribute值的重复次数,生成一个新的结果列。例如:group_idattribute结果G001A1G001A2G001B1原创 2022-01-25 16:26:59 · 338 阅读 · 0 评论 -
用Vim查看和编辑二进制文件
Vim 可以用来查看和编辑二进制文件vim -b8_9_9_0/partition.dat,加上-b参数,以二进制打开。输入命令 :%!xxd -g 1 切换到十六进制模式显示原创 2021-12-27 19:39:53 · 1780 阅读 · 0 评论 -
C++速度很快
# 测试计算10亿个整型数的和,开了OpenMP,花费时间是700毫秒。而Java计算1亿个整型数的和,用了300毫秒。# 代码代码贴在下面。```C++// cpp2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <chrono>#include <iostream>#include <math.h>int main(){ using std::chrono::system_clock;...原创 2021-12-27 13:32:39 · 415 阅读 · 0 评论