最近用c#寫乙個udp通訊的程式,為了測試裝置通訊能力。特定的時間內向裝置發大量的資料。
先是以隨機數填充了乙個設定大小的byte 陣列;再每次擷取其中一段來傳送。
結果發現傳送資料量始終上不去。
一直查原因無果,最後改變方式:開始申請乙個固定大小的陣列,後來傳送直接傳送申請的固定陣列,不用擷取copy 記憶體。
結果當然:
以下是動態生成位元組陣列的結果:
累計傳送時長(毫秒):23559;累計傳送資料(位元組):1577472
累計傳送時長(毫秒):25270;累計傳送資料(位元組):1597489
累計傳送時長(毫秒):15305;累計傳送資料(位元組):1028000
累計傳送時長(毫秒):30626;累計傳送資料(位元組):2054000
累計傳送時長(毫秒):10122;累計傳送資料(位元組):1931776
以下兩條是非動生成陣列結果
累計傳送時長(毫秒):6389;累計傳送資料(位元組):2054000
累計傳送時長(毫秒):8680;累計傳送資料(位元組):3081000
以下兩條是放棄執行緒阻塞結果:
累計傳送時長(毫秒):4086;累計傳送資料(位元組):46244000
累計傳送時長(毫秒):4549;累計傳送資料(位元組):52550000
終結:申請記憶體位址,記憶體copy 是乙個比較耗時的過程。
本文版權:成都至誠恒遠物聯網技術****
**:www.heryit.cn
乙個程序在記憶體中的布局
對於乙個完整的程式,在記憶體中分布情況如下圖 值得一提的是 在c 中struct存放在棧區,class存放在堆區,所以一般struct要比class要快的。堆和棧的比較表 僅針對c 棧 stack 堆 heap 申請方式 由os自動分配。例如在函式宣告乙個區域性變數int b os自動在棧中為b開闢...
乙個程序在記憶體中的布局
對於乙個完整的程式,在記憶體中分布情況如下圖 值得一提的是 在c 中 struct 存放在棧區,class 存放在堆區,所以一般 struct 要比class 要快的。堆和棧的比較表 僅針對c 棧 stack 堆 heap 申請方式 由 os自動分配。例如在函式宣告乙個區域性變數 int b os ...
乙個程序在記憶體中的布局
對於乙個完整的程式,在記憶體中分布情況如下圖 值得一提的是 在c 中 struct 存放在棧區,class 存放在堆區,所以一般 struct 要比class 要快的。堆和棧的比較表 僅針對c 棧 stack 堆 heap 申請方式 由 os自動分配。例如在函式宣告乙個區域性變數 int b os ...