我有一个代码块,需要打开并使用UNCpath从NAS服务器读取很多小文本文件。 此代码是最初用C ++编写的模块的一部分,但现在正在转换为C#。 C#版本明显较慢。 我确定打开文件的电话几乎占了所有的性能差异。 使用WireShark我发现这是因为System.IO.File.Open调用比类似的C ++代码更多的SMBnetworking请求。 C ++代码进行这个调用: FILE *f = _wfsopen(fileName, L"r", _SH_DENYWR); 这会导致以下一系列SMB请求: NT Create AndX Request, FID: 0x0004, Path: \\a\\i\\a\\q\\~141106162638847.nmd NT Create AndX Response, FID: 0x0004 Trans2 Request, QUERY_FILE_INFO, FID: 0x0004, Query File Basic Info Trans2 Response, FID: 0x0004, QUERY_FILE_INFO Read AndX Request, FID: 0x0004, 1327 bytes at offset 0 Read […]