.NET Core, GCExcel API 성능 테스트
페이지 정보
작성자 GrapeCity
본문
관련링크
는 Excel에 의존하지 않는 신속한 고성능 스프레드시트 API입니다. 완벽한 .NET Standard 2.0 지원을 바탕으로 .NET Framework, .NET Core, Mono, Xamarin에서 스프레드시트를 생성, 로드, 수정, 변환할 수 있습니다.
GrapeCity는 GcExcel의 성능을 지속적으로 모니터링하면서 새로 릴리즈할 때마다 성능을 향상시켜 왔습니다. Windows, MAC, Linux 등 세 가지 운영 체제에서 로드, 저장 및 계산 작업에 소요되는 수행 시간과 메모리 사용량을 기준으로 GcExcel과 경쟁 제품을 비교하여 결과를 기록했습니다.
세부 정보는 아래에서 확인하십시오.
테스트 시스템 구성:
Windows
OS - Microsoft Windows 10 Enterprise
버전 - 10.0.16299 빌드 16299
시스템 유형 - x86_64
프로세서 - Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz, 3601MHz, 4개의 코어, 8개의 논리 프로세서
설치된 물리적 메모리(RAM) - 8.00GB
MAC
OS - macOS Sierra
버전 - 10.12.6
아키텍처 - x86_64
프로세서 - 2.7GHz Intel Core i5
설치된 물리적 메모리(RAM) - 16GB 1867MHz DDR3
Linux
OS - Ubuntu
버전 - 16.04 LTS
시스템 유형 - x86_64
프로세서 - Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz
설치된 물리적 메모리(RAM) - 4.00GB
테스트 응용 프로그램 유형
.NET Core 콘솔 응용 프로그램(.NET Core 2.1)
테스트 데이터
다음 세 가지 유형의 Excel 파일을 로드/저장 및 계산 작업에 사용했습니다.
LargeValues.xlsx, 136MB, 막대한 양의 숫자 값 포함
LargeFormulas.xlsx, 21.9MB, 막대한 양의 수식 포함
ComplexFormulas.xlsx, 2.01MB, 평범한 양의 매우 복잡한 수식 포함
성능 측정
위의 테스트 데이터에 대한 로드, 저장 및 계산 작업에 소요된 시간과 메모리 사용량을 기록했습니다.
사용한 코드는 다음과 같습니다.
var fileName = Path.GetFileName(inputFile); Console.WriteLine("Benchmark for GcExcel"); Console.WriteLine(); Console.WriteLine("FileName: \"" + fileName + "\""); Console.WriteLine(); Workbook workbook = new Workbook(); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); workbook.Open(inputFile); stopwatch.Stop(); openTime = stopwatch.ElapsedMilliseconds / 1000d; Console.WriteLine("Open time:" + openTime.ToString("0.###") + "s"); long memorySize = GC.GetTotalMemory(true); memSizeAfterOpen = (memorySize / 1024d / 1024d); Console.WriteLine("Used Memory:" + memSizeAfterOpen.ToString("##.###") + "M"); Console.WriteLine(); stopwatch.Restart(); workbook.Dirty(); workbook.Calculate(); stopwatch.Stop(); calcTime = (stopwatch.ElapsedMilliseconds / 1000d); Console.WriteLine("Calclate time" + calcTime.ToString("0.###") + "s"); memorySize = GC.GetTotalMemory(true); memSizeAfterCalc = (memorySize / 1024d / 1024d); Console.WriteLine("Used Memory:" + memSizeAfterCalc.ToString("##.###") + "M"); Console.WriteLine(); if (!Directory.Exists(OutFilePath)) { Directory.CreateDirectory(OutFilePath); } stopwatch.Restart(); workbook.Save(Path.Combine(OutFilePath, fileName), null, new SaveOptions() { IsCompactMode = true }); stopwatch.Stop(); saveTime = (stopwatch.ElapsedMilliseconds / 1000d); Console.WriteLine("Save time" + saveTime.ToString("0.###") + "s"); memorySize = GC.GetTotalMemory(true); var memSizeAfterSave = (memorySize / 1024d / 1024d); Console.WriteLine("Used Memory: " + memSizeAfterSave.ToString("##.###") + "M"); Console.WriteLine(); // Prevent the GC collect the workbook before we show the memory size. workbook.Worksheets[0].Cells[0, 0].Value = 1;
성능 테스트 결과
가벼운 API 아키텍처로 메모리와 시간을 절약하십시오. GcExcel은 복잡한 파일을 빠르게 로드하고 저장하며 수식을 신속하게 계산합니다. 작업에 따라서는 시간이 채 1초도 걸리지 않습니다! 위의 시나리오에서 GcExcel의 성능을 확인하십시오.
Windows에서 성능 테스트 결과
Mac에서 성능 테스트 결과
Linux에서 성능 테스트 결과
성능 샘플
하여 직접 테스트해 보십시오!
이전에 수행한 를 참조하실 수 있습니다.
참고: 특정한 시스템 구성에서 얻은 결과입니다. 다른 구성에서 테스트하는 경우 GrapeCity에서 수집한 결과와 값이 정확히 일치하지 않을 수 있습니다. 전반적인 성능상 불일치가 관찰되는 경우 아래 댓글란에 남겨 주시기 바랍니다.
댓글목록
등록된 댓글이 없습니다.