思考一個系統,在系統不斷構建的過程中,系統需要支持多個不同版本的代碼 這時,設計模式的工廠模式不禁就蹦出在腦海中,來解決不同版本的代碼。 然而在追求極致性能的當下,是否這就是...

對于先進先出的內存分配場景分配內存的策略可以簡單很多例如消息隊列的內存分配問題 思考消息隊列中的元素內存大小差異巨大無法預先分配確定的內存塊來傳遞數據 在此提出一種基于計數的...
背景 例如分配一片內存,一般是順序申請,亂序回收 如果是跨線程的話,一般需要引入鎖來解決并發訪問的問題 然而鎖的使用,極大的限制住了最高的訪問并發量 在此提出了無鎖解決的方案...
一般來說server單機,實現30w qps算很高了, 但是受摩爾定律的限制,單核的性能已經發揮到了極致,市場上,也出現了大量多核的服務器 那么對于單線程epoll的服務器架...
設計原理 初始化 建立2048個元素的數組,用于傳輸數據 為每個元素分配一個版本號:turn turn為奇數是,為可讀 turn為偶數時,為可寫 生產者 搶奪head原子變量...
CPU Cache有L1/L2/L3 cache,它們是為了減緩CPU高速與Ram低速之間的數據運輸成本的buffer speed L1: 4 CPU cyclesL2: 1...
出自:https://www.brendangregg.com/perf.html[https://www.brendangregg.com/perf.html] 簡介 pe...
出自:https://netflixtechblog.com/linux-performance-analysis-in-60-000-milliseconds-accc10...
簡介 對于短時間的locking,spin lock可以提供更好的性能,對比mutex lock。因為spin lock不會讓線程陷于睡眠,從而提供更好的性能 實現過程 一個...
背景 多線程通訊,如果是單讀單寫,一般使用帶atomic操作的ring buffer來實現 ring buffer原理非常簡單,而然,如果需要實現高性能,則需要在原始的設計上...
背景 C++的設計具備面向對象的思想 通過面向對象的抽象,可以很好解耦和擴展。 然而對于某些高性能設計,面向對象并不是很好的設計 而面向數據的思想在某種程度,解決了高性能的問...
背景 在程序運行的過程中,經常會遇到使用std::queue的情況,例如線程之間的交互 而std::queue內的元素,一般會使用std::unique_ptr來維護內存的生...