[分享] C++ shared pointer 的速度
由於工作性質的關係
我的程式會需要就是在不同函數間傳遞資料
但是這個資料是模擬封包傳遞,一個 struct 可能有 100~1000 KB
像是 Producer 會一直產生固定大小的 struct
然後讓 Consumer 去消化
--
一開始,為了快速開發,就直接 pass by value
之後程式正確再改成 shared_ptr
沒想到一改 shared_ptr 之後整個程式執行時間直接變 1.5~2 倍
經過了一段嘗試後來才發現
原來因為用 shared_ptr 會導致一直 new/delete
其 overhead 遠大於直接複製 100 bytes 以上的資料
解決的方法是自己管理記憶體,也就是說要用 memory pool
於是就試著自己實做一個 shared_ptr + memory pool
才把執行時間壓到原本的 0.7 倍
--
因為覺得這個過程還蠻有趣的
所以就把他寫成一篇文章紀錄下來了
也希望能出現願意討論的網友,看看有沒有可能出現更快、更簡單的作法
這邊是文章連結,裡面的內容有
1. 各種不同記憶體管理方法速度比較
2. 自己實做 shared_ptr+memory pool
3. 發現 2. 其實沒有比較快,直接把 std::shared_ptr 包裝起來就夠快了
https://ys-hayashi.me/series/smart-pointer-%E9%80%9F%E5%BA%A6/
// 嗯對,我就是想來增加網誌流量的,應該沒違反什麼版規吧(笑
// 裡面沒有廣告,反正放了也賺不了什麼錢(笑
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.48.93 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1603889982.A.9D4.html
→
10/28 21:15,
4年前
, 1F
10/28 21:15, 1F
→
10/28 21:20,
4年前
, 2F
10/28 21:20, 2F
→
10/28 21:21,
4年前
, 3F
10/28 21:21, 3F
→
10/28 21:21,
4年前
, 4F
10/28 21:21, 4F
→
10/28 21:23,
4年前
, 5F
10/28 21:23, 5F
→
10/28 21:33,
4年前
, 6F
10/28 21:33, 6F
→
10/28 21:33,
4年前
, 7F
10/28 21:33, 7F
→
10/28 21:33,
4年前
, 8F
10/28 21:33, 8F
→
10/28 21:33,
4年前
, 9F
10/28 21:33, 9F
→
10/28 21:33,
4年前
, 10F
10/28 21:33, 10F
→
10/28 21:33,
4年前
, 11F
10/28 21:33, 11F
→
10/28 22:11,
4年前
, 12F
10/28 22:11, 12F
→
10/28 22:20,
4年前
, 13F
10/28 22:20, 13F
→
10/28 22:21,
4年前
, 14F
10/28 22:21, 14F
→
10/28 22:21,
4年前
, 15F
10/28 22:21, 15F
→
10/28 22:22,
4年前
, 16F
10/28 22:22, 16F
→
10/28 22:23,
4年前
, 17F
10/28 22:23, 17F
→
10/28 22:24,
4年前
, 18F
10/28 22:24, 18F
→
10/28 22:24,
4年前
, 19F
10/28 22:24, 19F
→
10/28 22:25,
4年前
, 20F
10/28 22:25, 20F
→
10/28 22:27,
4年前
, 21F
10/28 22:27, 21F
→
10/28 22:27,
4年前
, 22F
10/28 22:27, 22F
→
10/28 22:32,
4年前
, 23F
10/28 22:32, 23F
→
10/28 22:32,
4年前
, 24F
10/28 22:32, 24F
→
10/28 22:41,
4年前
, 25F
10/28 22:41, 25F
→
10/28 22:41,
4年前
, 26F
10/28 22:41, 26F
→
10/28 22:41,
4年前
, 27F
10/28 22:41, 27F
→
10/28 22:41,
4年前
, 28F
10/28 22:41, 28F
推
10/28 22:53,
4年前
, 29F
10/28 22:53, 29F
推
10/28 22:59,
4年前
, 30F
10/28 22:59, 30F
推
10/28 23:37,
4年前
, 31F
10/28 23:37, 31F
→
10/28 23:37,
4年前
, 32F
10/28 23:37, 32F
→
10/28 23:39,
4年前
, 33F
10/28 23:39, 33F
→
10/28 23:39,
4年前
, 34F
10/28 23:39, 34F
→
10/28 23:39,
4年前
, 35F
10/28 23:39, 35F
推
10/29 00:16,
4年前
, 36F
10/29 00:16, 36F
推
10/29 00:24,
4年前
, 37F
10/29 00:24, 37F
→
10/29 14:39,
4年前
, 38F
10/29 14:39, 38F
→
10/29 14:39,
4年前
, 39F
10/29 14:39, 39F
→
10/29 14:40,
4年前
, 40F
10/29 14:40, 40F
→
10/29 14:41,
4年前
, 41F
10/29 14:41, 41F
→
10/29 18:25,
4年前
, 42F
10/29 18:25, 42F
→
10/29 18:26,
4年前
, 43F
10/29 18:26, 43F
→
10/29 18:27,
4年前
, 44F
10/29 18:27, 44F
→
10/29 21:22,
4年前
, 45F
10/29 21:22, 45F
→
10/29 21:26,
4年前
, 46F
10/29 21:26, 46F
→
10/29 21:26,
4年前
, 47F
10/29 21:26, 47F
→
10/30 15:06,
4年前
, 48F
10/30 15:06, 48F
推
10/30 15:08,
4年前
, 49F
10/30 15:08, 49F
→
10/30 16:06,
4年前
, 50F
10/30 16:06, 50F
推
10/30 18:48,
4年前
, 51F
10/30 18:48, 51F
→
10/31 11:53,
4年前
, 52F
10/31 11:53, 52F
→
10/31 11:54,
4年前
, 53F
10/31 11:54, 53F
→
10/31 11:54,
4年前
, 54F
10/31 11:54, 54F
推
10/31 12:57,
4年前
, 55F
10/31 12:57, 55F
→
10/31 15:40,
4年前
, 56F
10/31 15:40, 56F
→
10/31 15:41,
4年前
, 57F
10/31 15:41, 57F
→
10/31 15:45,
4年前
, 58F
10/31 15:45, 58F
→
10/31 15:47,
4年前
, 59F
10/31 15:47, 59F
→
10/31 15:50,
4年前
, 60F
10/31 15:50, 60F
→
10/31 15:51,
4年前
, 61F
10/31 15:51, 61F
→
10/31 15:53,
4年前
, 62F
10/31 15:53, 62F
→
10/31 15:55,
4年前
, 63F
10/31 15:55, 63F
→
10/31 15:56,
4年前
, 64F
10/31 15:56, 64F
推
11/01 04:43,
4年前
, 65F
11/01 04:43, 65F
→
11/01 04:43,
4年前
, 66F
11/01 04:43, 66F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章