第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么重新分配緩沖區(qū)比重置緩沖區(qū)更快?

為什么重新分配緩沖區(qū)比重置緩沖區(qū)更快?

C#
白衣非少年 2021-11-28 16:26:17
在重構一些舊代碼時,我決定做一些毫無意義的過早優(yōu)化并重新利用緩沖區(qū)而不是每次都重新分配它。令我驚訝的是,我發(fā)現(xiàn)它的速度非常慢。再生產:    private static void Main(string[] args)    {        const int N = (int)1e4;        const int size = 100 * 1024;        var sw = Stopwatch.StartNew();        var buffer = new byte[size];        for (int n = 0; n < N; n++)        {            buffer = new byte[size];        }        var reallocMs = sw.ElapsedMilliseconds;        sw = Stopwatch.StartNew();        buffer = new byte[size];        for (int n = 0; n < N; n++)        {            for (int i = 0; i < buffer.Length; i++)            {                buffer[i] = 0;            }        }        var rewriteMs = sw.ElapsedMilliseconds;        Console.WriteLine($"Reallocating: {reallocMs} ms");        Console.WriteLine($"Rewriting: {rewriteMs} ms");        Console.WriteLine($"Rewrite / reallocate = {(double)rewriteMs / (double)reallocMs}");    }內置時Release,重寫每個字節(jié)比重新分配新緩沖區(qū)慢約 8 倍。在Debug它下降到幾乎慢 50 倍!這怎么可能?我預計擁有固定緩沖區(qū)會提高性能,但顯然并非如此。我在這里錯過了什么?PS:順便說一句,Array.Clear()它始終比 for 循環(huán)慢,盡管它的性能與構建配置無關。
查看完整描述

1 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

每次寫入數組時,它都可能引發(fā)異常。因此,在循環(huán)實現(xiàn)中的每次寫入時,都會對索引進行邊界檢查。當第一次初始化已知范圍的內存時,可以優(yōu)化掉。


查看完整回答
反對 回復 2021-11-28
  • 1 回答
  • 0 關注
  • 202 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號