c++
K946
123
展开
-
[C++ 代码优化, 读书笔记] 程序中的优化点
3.6 动态链接与和位置无关代码 1. 静态链接比动态链接更快,因为省去了在运行时搜索函数的时间。。详情在150页 2. 位置无关代码出现UNIX或者Mac系统中,它们和共享对象有关,也比较耗时。。详情在155页 3.7 文件访问 1. 如果电脑有杀毒软件,那么文件访问会更加耗时,因为杀软会扫描所有的文件访问 2. 顺序访问文件的内容比随机访问文件的内容更快(好像和缓存有关) 3. 一次读取大块文件比一次读取几个字节更快(?原因未知) 4. 将...原创 2021-12-24 19:54:34 · 831 阅读 · 0 评论 -
Android CMAKE 编译so链接另一个so
CMake: #根据编译的位选择库目录if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") set (EXTRA_LIBS_DIR ${EXTRA_LIBS_DIR} ${lib}/Curl/armeabi-v7a) else() set (EXTRA_LIBS_DIR ${EXTRA_LIBS_DIR} ${lib}/Curl/arm64-v8a)endif()link_directories(${EXTRA_LIBS_DIR}) ##包含.原创 2021-09-27 10:22:08 · 531 阅读 · 0 评论 -
Mac替换应用程序dylib,提示DllNotFoundException
/*查找依赖*/otool -L libMylib.dylib /*改变依赖 libOtherlib.dylib -》 @executable_path/libOtherlib.dylib*/install_name_tool -change libOtherlib.dylib @executable_path/libOtherlib.dylib libMylib.dylib/*改变对自己的依赖,这个挺重要的,貌似决定了去那里找当前引用的库*/install_name_tool -id @e...原创 2020-12-07 16:09:39 · 624 阅读 · 0 评论 -
超简C++11 线程池
线程池的作用:和内存池一样,减少内核态与用户态之间的切换用C++11新特性实现的超简版线程池:#include<thread>#include<mutex>#include<condition_variable>#include<vector>#include<future>#include<queue>...原创 2019-11-25 16:37:35 · 278 阅读 · 0 评论 -
c++实现内存池并应用到STL容器
内存池: 为了节省申请小块内存与释放小块内存时的开销,可以使用内存池,开始时根据需要申请一片较大的内存,在申请小块内存的时候从内存池中获取,在释放小块内存时,将内存放回内存池内存池中的内存块: 块的大小可以由内存池的编写者确定,一般为8的倍数:8,16,24,32,.....,128;单位为字节,相同大小的块通过指针串成一串(和单链表一样)内存池的两个部分:...原创 2019-10-26 20:07:08 · 470 阅读 · 0 评论 -
重写STL中的vector的内存配置器
Vector在创建时接受的参数在c++STL中,容器类vector实际上在创建时可以接收两个参数,第一个是存储的元素的类型,第二个是内存配置器,第二个参数有默认值,但我们可以覆盖这个默认值,但是默认值的覆盖需要遵守一些规则,而这些规则则是本文的要讲述的。创建时添加第二参数:std::vector<int, my::allocator<int>> iv; //创建一个...原创 2019-10-19 16:22:06 · 570 阅读 · 0 评论