제 영어를 용서하십시오.XmlReader (Stream (fileName) -> MemoryStream)가 XmlReader (fileName)보다 느립니다.
큰 XML 파일 (> 2GB)을 읽고 싶습니다. 그것에 대해 여러 게시물을보고 XmlReader를 사용하는 것으로 파악했습니다. 테스트 목적
, 나는 500메가바이트 XML을 생성하고이 코드를 확인했다 :
XmlReader reader = XmlReader.Create(ofd.FileName);
// work with reader
가 ofd.FileName : 이름
먼저 하나
MemoryStream mem = new MemoryStream();
Stream file = File.OpenRead(ofd.FileName);
file.CopyTo(mem);
mem.Position = 0;
file.Close();
XmlReader reader = XmlReader.Create(mem);
// work with reader
두 번째 하나를 xml 파일의 경로
독자와 작동 : 두 알고리즘에서 동일합니다.
내 RAM의 속도는 다음과 같습니다 15기가바이트/초 내 SSD의 속도는 다음과 같습니다 1백50메가바이트/초
내가 처음 알고리즘은 빠른 최소 100 시간으로 될 것이라고 생각했다. 그러나 실제로는 두 번째 알고리즘이 빠릅니다.
첫 번째 알고리즘 지속 시간 : 10500 밀리 초.
두 번째 알고리즘 지속 시간 : 9500 밀리 초.
왜? 프로그램이 첫 번째 알고리즘에서 여러 추상 레이어를 교차해야하기 때문입니까?
감사합니다.
벤치마킹 방법에 대한 정보가 충분하지 않습니다. 1 초 또는 10 %의 차이는 JITter 예열이 될 수 있습니다. 적절한 벤치 마크를 수행하면 아마 똑같은 성능을 보일 것입니다. – CodeCaster
첫 번째 경우에는 무엇을 측정하고 있습니까? (파일을 읽었는지 아닌지를 포함합니까?) 파일을 읽는 데 걸리는 시간이 포함되어 있다면 왜 "적어도 100 시간 이상 빠름"을 기대합니까? –
@CodeCaster : var watch = Stopwatch.StartNew(); 알고리즘 이전에 및 : watch.Stop(); Console.WriteLine (watch.ElapsedMilliseconds); 알고리즘 후 – steacker