c# – 快速阅读控制台输入
我需要从控制台的标准输入流快速读取数据.输入包括100.000行,每行20个字符(2百万个字符);用户将其从剪贴板粘贴.我的程序工作了大约3分钟(很慢,目标是10秒).看起来像:
var inputData = new string[100000]; // 100.000 rows with 20 chars for (int i = 0; i < 100000; i++) // Cycle duration is about 3 minutes... { inputData[i] = Console.ReadLine(); } // some processing... 我试过了什么 > Directly:Console.Read,Console.ReadKey – 相同的结果 我注意到,输入正在读取中 – 进程conhost.exe主动使用一个处理器. 如何加快输入的阅读速度? UPD: >增加/减少Console.BufferHeight和Console.BufferWidth没有影响 ReadFile(handle,buffer,bufferSize,out bytesCount,null); // bufferSize may be very big,but buffer obtains no more than one row (with rn). // So,it seems that data passed into InputStream row-by-row syncroniously. 解决方法
使用本机WinApi函数:
>获取输入句柄:GetStdHandle msdn WinApi在C#中使用的示例:http://www.pinvoke.net/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |