.NET Core, GCExcel API 성능 테스트 > 블로그 & Tips

본문 바로가기

.NET Core API

블로그 & Tips

.NET Core, GCExcel API 성능 테스트

페이지 정보

작성자 GrapeCity 작성일 20-10-13 15:53 조회 25회 댓글 0건

본문

GcExcel .NET Core API는 Excel에 의존하지 않는 신속한 고성능 스프레드시트 API입니다. 완벽한 .NET Standard 2.0 지원을 바탕으로 .NET Framework, .NET Core, Mono, Xamarin에서 스프레드시트를 생성, 로드, 수정, 변환할 수 있습니다.


실시간 Excel 파일에는 보통 엄청난 양의 시트, 대규모 데이터, 복잡한 수식, 표 등이 포함되어 있습니다. .NET 응용 프로그램에서 개발자는 이러한 파일을 로드하고, 수식을 계산하고, 파일을 저장하며, 실시간 데이터로 작업해야 합니다. Excel API를 사용하는 경우 계산, 정보 이동, 정보 보안을 더 확실히 제어할 수 있게 됩니다.


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 파일을 로드/저장 및 계산 작업에 사용했습니다.

  1. LargeValues.xlsx, 136MB, 막대한 양의 숫자 값 포함

  2. LargeFormulas.xlsx, 21.9MB, 막대한 양의 수식 포함

  3. 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에서 성능 테스트 결과

Windows에서 성능 테스트 결과


Mac에서 성능 테스트 결과

Mac에서 성능 테스트 결과


Linux에서 성능 테스트 결과

Linux에서 성능 테스트 결과


성능 샘플

샘플을 다운로드하여 직접 테스트해 보십시오!

이전에 수행한 성능 테스트를 참조하실 수 있습니다.


참고: 특정한 시스템 구성에서 얻은 결과입니다. 다른 구성에서 테스트하는 경우 GrapeCity에서 수집한 결과와 값이 정확히 일치하지 않을 수 있습니다. 전반적인 성능상 불일치가 관찰되는 경우 아래 댓글란에 남겨 주시기 바랍니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2020 GrapeCity inc.