udp的傳送效率和什麼因素有關呢?
直觀覺得,udp的切包長越大,應該傳送效率越高(最長為65536)。可是依據實際測試和在網上查到的資料的結果,包長度為1024為傳送效率最高。
這樣的結果讓人感到疑惑,為什麼是1024這樣的奇怪的值呢?為什麼不是mtu(最小傳送單元)的長度(即1500-28)呢?
後來調查發現,windows的網路底層,預設udp分片長度為1024時,走的是高速通道模式,詳細如何的高速通道?沒有再繼續深入研究。
通過改動以下的登錄檔能夠加大1024.
hkey_local_machine\system\currentcontrolset\services\afd\parameters\fastsenddatagramthreshold
而且須要改動網絡卡登錄檔的mtu與上面的值一致,詳細登錄檔項例如以下所看到的:
hkey_local_machine\\system\currentcontrolset\services\tcpip\parameters\inte***ces\mtu
改動以上登錄檔值的演示樣例**:
// 改動本地udp包傳送長度並依據網路mtu確定實際udp傳送的包長度
// lenpacket【out】:包長度,
bistorestartcomputer【out】:是否重新啟動計算機(當改動了登錄檔,則須要重新啟動有效)
// 返回:true(成功),false(失敗)
bool setmaxefficencyu***acketlength(int &lenpacket, bool &bistorestartcomputer)
bistorestartcomputer = true;
} // 校驗值
else
bistorestartcomputer = true;
}} }
// 設定【hkey_local_machine\system\currentcontrolset\services\tcpip\parameters\inte***ces】
// 改動mtu=1500
// 假設不存在,則返回
hkey hmainkey = null;
long lretcode = ::regopenkeyex(hkey_local_machine,_t("system\\currentcontrolset\\services\\tcpip\\parameters\\inte***ces"),0,key_read,&hmainkey);
if(lretcode != error_success)
// 遍歷全部網口,改動mtu
dword dwindex = 0;
tchar swzsubkey[max_path] = _t("");
dword dwnamelen = max_path;
while(error_success == ::regenumkeyex(hmainkey, dwindex, swzsubkey, &dwnamelen, null, null, null, null))
bistorestartcomputer = true;}}
} // 重置快取
memset(swzsubkey, 0, sizeof(swzsubkey));
dwnamelen = max_path;
// 下乙個子項
dwindex ++;
} ::regclosekey(hmainkey);
return true;
}
可是須要注意的是,改動此值須要確保小於或者等於整個網路路徑的mtu,如何檢查整個網路的mtu呢?能夠通過執行以下指令獲取:
ping -f -n 1 -l 1472 192.168.0.2
當中,1472為傳送的包長度,假設執行結果為0,表示可以傳送;可以繼續提高1472,否則減少;直至獲取最大值。
詳細**例如以下所看到的:
// 獲取網路mtu
// uldestip【in】:目標ip
// 返回:mtu
uint getlanmtu(ulong uldestip)
else
return lenpacket;
}
提高SQL執行效率的方法
oracle提供了多種方法用於減少花在剖析oracle sql表示式上的時間,在執行帶有大量執行計畫的複雜查詢時剖析過程會拖累系統的效能。現在我們來簡要地看看這些方法中的幾種。1 使用ordered提示 oracle必須花費大量的時間來剖析多 的合併,用以確定 合併的最佳順序。如果sql表示式涉及七...
常用提高C 效率的方法
自從七十年代c語言誕生以來,一直以其靈活性 高效率和可移植性為軟體開發人員所鍾愛,成為系統軟體開發的首選工具。而c 作為c語言的繼承和發展,不僅保留了c語言的高度靈活 高效率和易於理解等諸多優點,還包含了幾乎所有物件導向的特徵,成為新一代軟體系統構建的利器。相對來說,c語言是一種簡潔的語言,所涉及的...
提高python執行效率的方法
python上手很容易,但是在使用過程中,怎麼才能使效率變高呢?下面說一下提高python執行效率的方法,這裡只是說一點,python在引入模組過程中提高效率的方法。例如 1.我們要使用os模組中的某個屬性,那我們可以單獨引入os中某個屬性 from os import version 同樣的我們也...