sgcPivotGrid Kıyaslama Sonuçları

sgcPivotGrid motoru TsgcPivotEngine için 1.000.000 ve 10.000.000 satırda ölçülmüş süreler: verinin yüklenmesi, üç pivot düzeninin tek geçişte ve paralel hesaplamayla yeniden hesaplanması ve motorun verinin üstüne eklediği bellek. Her sayı, sgcUI demolarındaki bir kıyaslama programından gelir, böylece aynı testi kendi donanımınızda çalıştırabilirsiniz.

13,9 ms
1.000.000 satırı yeniden hesaplama, Sum, tek geçiş
121,1 ms
10.000.000 satırı yeniden hesaplama, Sum, tek geçiş
46,9 ms
10.000.000 satır, Sum, 4 iş parçacığıyla paralel hesaplama
1.384,0 ms
AppendRow ile 10.000.000 satırı yükleme

Win64, Delphi 13, aşağıda tanımlanan test makinesinde 1 ısınma çalıştırmasından sonra 5 çalıştırmanın medyanı. Win64 sonuçlarına, Win32 sonuçlarına, QA bütçelerine veya testi kendiniz nasıl çalıştıracağınıza gidin.

Ne Ölçülür

Satırlar sabit bir çekirdek değerinden üretilir, bu yüzden her makine aynı pivotu hesaplar. Her mod, P1 genel toplamının değer sütununun toplamına eşit olduğunu denetler.

SenaryoProgram ne yapar
YüklemeHer biri 3 metin değeri, 1 sayı ve 1 tarih içeren 1.000.000 veya 10.000.000 satırın AppendRow işlemi. Metin, geldikçe üye dizinlerine kodlanır. İkinci bir adım, Store.SetFloat ile bir sayı sütununu 100.000 farklı değerle doldurur.
P1 Sum2 satır alanı (50 bölge ve 20 ürün, ara toplamlar ve genel toplamla birlikte 1.051 satır öğesi) ve 1 sütun alanı (12 ay), tek bir değerin Sum işlevi. Temel pivot.
P3 CountDistinct100.000 farklı değeri olan sütunun farklı değerlerini sayan P1 düzeni, en pahalı standart toplama işlevi.
P4 StdDev, Average, MaxP1 düzeninde aynı anda üç ölçü.
Tek geçişVarsayılan motor, ParallelCalculation kapalı.
1 ile 14 iş parçacığıMaxThreads ayarlı ve ParallelThreshold := 1 ile ParallelCalculation := True, böylece 1.000.000 satır da paralel çalışır. "Tüm CPU'lar", mantıksal CPU başına bir iş parçacığı demek olan MaxThreads := 0 ayarıdır, test makinesinde 14.
Motor belleğiMotorun P1 için yüklenen verinin üstüne ayırdığı bellek (QA kapısı M1). Depo belleği, yüklenen verinin kendisidir.

Test Makinesi

Normal masaüstü yüküyle çalışan bir geliştirici iş istasyonu, yalıtılmış bir laboratuvar makinesi değil. 4 Kasım 2026 tarihinde ölçüldü.

ÖğeDeğer
CPUIntel Core Ultra 5 245T, 35 W'lık bir masaüstü işlemcisi
Çekirdekler6 performans çekirdeği ve 8 verimli çekirdek, 14 mantıksal CPU
Bellek31,5 GB
İşletim sistemiWindows 11 Pro 26H2 (derleme 26300)
DerleyiciDelphi 13 Florence, sürüm derlemesi: optimizasyon açık, aralık ve taşma denetimleri kapalı
PlatformlarWin64 (1 ısınma çalıştırmasından sonra 5 çalıştırmanın medyanı) ve Win32 (hızlı çalıştırma: 1 ısınma çalıştırmasından sonra 1 ölçülen çalıştırma)
sgcPivotGrid2026.11.0 Registered

İşlemci hızlı ve verimli çekirdekleri bir arada kullanır ve her işçi iş parçacığının nerede çalışacağına Windows karar verir. 8 veya daha fazla iş parçacığıyla işin bir kısmı verimli çekirdeklere düşer: Win64'te 1.000.000 satırdaki P4 bu durumda çalıştırmalar arasında yaklaşık 13 ms ile yaklaşık 32 ms arasında gidip gelir, bu yüzden medyanı 8 iş parçacığıyla 31,2 ms'ye sıçrar.

Win64

1 ısınma çalıştırmasından sonra 5 çalıştırmanın medyanı. Süreler milisaniye cinsinden.

Yükleme ve bellek1.000.000 satır10.000.000 satır
AppendRow, 3 metin, 1 kayan nokta, 1 tarih sütunu132,9 ms1.384,0 ms
Store.SetFloat, 100.000 farklı değeri olan 1 kayan nokta sütunu8,6 ms98,3 ms
Depo belleği (6 sütun)36,0 MB576,0 MB
P1 sonrası motor belleği, her mod4,8 MB39,1 MB

Yeniden Hesaplama, 1.000.000 satır

Modİş parçacığıP1 SumP3 CountDistinctP4 StdDev, Average, Max
Tek geçiş113,9 ms25,6 ms26,3 ms
Paralel, 1 iş parçacığı112,2 ms21,6 ms26,3 ms
Paralel, 2 iş parçacığı29,6 ms18,2 ms17,8 ms
Paralel, 4 iş parçacığı47,1 ms15,9 ms12,9 ms
Paralel, 8 iş parçacığı86,8 ms15,3 ms31,2 ms
Paralel, tüm CPU'lar146,8 ms16,5 ms31,8 ms

Yeniden Hesaplama, 10.000.000 satır

Modİş parçacığıP1 SumP3 CountDistinctP4 StdDev, Average, Max
Tek geçiş1121,1 ms300,2 ms216,9 ms
Paralel, 1 iş parçacığı1106,4 ms253,0 ms230,6 ms
Paralel, 2 iş parçacığı267,1 ms212,7 ms130,3 ms
Paralel, 4 iş parçacığı446,9 ms184,6 ms127,5 ms
Paralel, 8 iş parçacığı863,6 ms181,1 ms111,9 ms
Paralel, tüm CPU'lar1473,5 ms186,4 ms105,4 ms

Win32

Hızlı çalıştırma: 1 ısınma çalıştırmasından sonra 1 ölçülen çalıştırma, bu yüzden bu sayılar Win64 medyanlarından daha dalgalıdır. Program, 10.000.000 satırlık deponun gerek duyduğu büyük adres alanını destekler.

Yükleme ve bellek1.000.000 satır10.000.000 satır
AppendRow, 3 metin, 1 kayan nokta, 1 tarih sütunu143,7 ms1.511,9 ms
Store.SetFloat, 100.000 farklı değeri olan 1 kayan nokta sütunu16,8 ms183,7 ms
Depo belleği (6 sütun)36,0 MB576,0 MB
P1 sonrası motor belleği, her mod4,7 MB39,1 MB

Yeniden Hesaplama, 1.000.000 satır

Modİş parçacığıP1 SumP3 CountDistinctP4 StdDev, Average, Max
Tek geçiş116,9 ms27,3 ms50,8 ms
Paralel, 1 iş parçacığı116,7 ms22,9 ms51,0 ms
Paralel, 2 iş parçacığı211,3 ms20,4 ms32,8 ms
Paralel, 4 iş parçacığı48,6 ms16,3 ms23,1 ms
Paralel, 8 iş parçacığı88,5 ms16,3 ms19,2 ms
Paralel, tüm CPU'lar148,5 ms15,6 ms19,2 ms

Yeniden Hesaplama, 10.000.000 satır

Modİş parçacığıP1 SumP3 CountDistinctP4 StdDev, Average, Max
Tek geçiş1143,6 ms286,8 ms442,6 ms
Paralel, 1 iş parçacığı1139,4 ms253,6 ms463,7 ms
Paralel, 2 iş parçacığı288,0 ms207,8 ms252,4 ms
Paralel, 4 iş parçacığı452,5 ms176,8 ms141,7 ms
Paralel, 8 iş parçacığı857,2 ms167,1 ms159,6 ms
Paralel, tüm CPU'lar1464,4 ms172,0 ms131,9 ms

.NET x64

Kıyaslama programının .NET portu, Delphi programıyla aynı satırlar, düzenler ve modlarla. Başka bir çalışma zamanında çalışır, bu yüzden bu sayıları kendi tablosu olarak okuyun. 1 ısınma çalıştırmasından sonra 5 çalıştırmanın medyanı. Süreler milisaniye cinsinden.

Yükleme ve bellek1.000.000 satır10.000.000 satır
AppendRow, 3 metin, 1 kayan nokta, 1 tarih sütunu75,6 ms770,4 ms
Store.SetFloat, 100.000 farklı değeri olan 1 kayan nokta sütunu2,9 ms43,0 ms
Depo belleği (6 sütun)36,0 MB576,0 MB
P1 sonrası motor belleği, her mod4,7 MB39,1 MB

Çalışma zamanı: .NET 8.0.31, x64 işlemi, sürüm derlemesi, sgcPivotGrid 2026.11.0 Registered ile bir net8.0 konsol programı, yukarıdaki test makinesinde ve aynı gün. Bellek, tam bir çöp toplamadan sonra GC.GetTotalMemory(true) ile ölçülen canlı yönetilen yığındır.

Yeniden Hesaplama, 1.000.000 satır

Modİş parçacığıP1 SumP3 CountDistinctP4 StdDev, Average, Max
Tek geçiş111,9 ms23,3 ms14,7 ms
Paralel, 1 iş parçacığı112,1 ms21,3 ms20,1 ms
Paralel, 2 iş parçacığı28,5 ms15,5 ms12,6 ms
Paralel, 4 iş parçacığı46,3 ms14,8 ms9,9 ms
Paralel, 8 iş parçacığı86,8 ms13,6 ms9,8 ms
Paralel, tüm CPU'lar146,6 ms13,3 ms9,6 ms

Yeniden Hesaplama, 10.000.000 satır

Modİş parçacığıP1 SumP3 CountDistinctP4 StdDev, Average, Max
Tek geçiş167,6 ms275,1 ms128,0 ms
Paralel, 1 iş parçacığı176,4 ms215,0 ms175,9 ms
Paralel, 2 iş parçacığı244,2 ms159,6 ms89,9 ms
Paralel, 4 iş parçacığı428,8 ms133,7 ms56,2 ms
Paralel, 8 iş parçacığı834,0 ms151,7 ms72,6 ms
Paralel, tüm CPU'lar1428,3 ms154,9 ms66,0 ms

.NET QA performans testleri, Delphi bütçelerinin 1,2 katını kullanır (x64'te P1 için 120 ms). Bu çalıştırmada 1.000.000 satırdaki her kapı bütçesi içinde kaldı ve P1 genel toplamı her modda değerlerin toplamına eşitti.

.NET Kıyaslamasını Çalıştırın

  1. sgcUI .NET demolarından PivotGrid\Benchmark\Benchmark.csproj dosyasını açın. Ayrıntılar o klasördeki README.md dosyasındadır.
  2. Release yapılandırmasında .NET 8 SDK veya daha yenisiyle derleyip çalıştırın. Paralel hesaplama modları Registered veya Trial sürümünü gerektirir.
  3. Anahtarlar, Delphi programının anahtarlarıdır. Her çalıştırma dotnet-<arch>.md, .json ve .csv dosyalarını yazar, örneğin dotnet-x64.md.
dotnet run -c Release
dotnet run -c Release -- --rows=1m,10m --quick
dotnet run -c Release -- --rows=500k,2m --threads=4 --out=C:\bench

1.000.000 Satırda QA Bütçeleri

QA performans grubu bu bütçeleri her derlemede, Win64 ve Win32 üzerinde doğrular ve biri aşıldığında QA çalıştırması başarısız olur. 10.000.000 satırın bütçesi yoktur: QA bunları yalnızca raporlar.

KapıNe ölçülürWin64 bütçesiWin64 ölçülenWin32 bütçesiWin32 ölçülen
P11.000.000 satırı yeniden hesaplama, 2 satır alanı, 1 sütun alanı, 1 Sum100 ms13,9 ms160 ms16,9 ms
P1PParallelCalculation ile P1, CPU başına bir iş parçacığı100 ms6,8 ms160 ms8,5 ms
P23 metin, 1 kayan nokta ve 1 tarih değerinden oluşan 1.000.000 satırın AppendRow işlemi, kodlama dahil900 ms132,9 ms1.400 ms143,7 ms
P3100.000 farklı değeri olan sütunda CountDistinct ile P1 düzeni400 ms25,6 ms600 ms27,3 ms
P4StdDev, Average ve Max ile P1 düzeni180 ms26,3 ms280 ms50,8 ms
M1P1 için deponun üstündeki motor belleği32 MB4,8 MB32 MB4,7 MB
M1PParallelCalculation ile M1, CPU başına bir iş parçacığı32 MB4,8 MB32 MB4,7 MB

Bütçeler bilerek gevşek tutulmuştur, böylece yavaş derleme makinelerindeki gerilemeleri yakalar. Test makinesinde ölçülen değerler bunların 5,5 ile 22 kat altındadır.

Paralel Hesaplama

Tabloların paralel satırlarının ne eklediği ve kaç iş parçacığı kullanılacağı. Registered

ParallelCalculation := True, büyük bir yeniden hesaplamayı 131.072 satırlık sabit parçalara böler, parçaları işçi iş parçacıklarında hesaplar ve parça sırasına göre birleştirir. MaxThreads işçileri sınırlar (0, CPU başına bir iş parçacığı demektir, en çok 64) ve varsayılan olarak 1.000.000 satır olan ParallelThreshold, daha küçük depoları tek geçişte tutar. Varsayılan olarak kapalıdır, çünkü Sum, Average, Product ve StdDev ailesi son bitlerde tek geçişten farklı olabilir. Registered ve Trial sürümlerinde bulunur.

  • MaxThreads için 4 ile 8 kullanın. Test makinesinde Win64'te her iki boyutta da en iyi P1'i 4 iş parçacığı verdi: 1.000.000 satırda 7,1 ms ve 10.000.000 satırda 46,9 ms, tek geçişteki 13,9 ms ve 121,1 ms'ye karşı.
  • Daha çok iş parçacığı her zaman daha hızlı değildir. 1.000.000 satır yalnızca 8 parça oluşturur, bu yüzden iş parçacığı başlatma ve birleştirme maliyetleri kazanılan işten daha ağır basar. 10.000.000 satırda P1, 14 iş parçacığıyla 73,5 ms sürer, 4 iş parçacığıyla ise 46,9 ms, çünkü sıralı birleştirme seri çalışır.
  • Ağır ölçüler daha uzağa ölçeklenir. 10.000.000 satırdaki P4, Win64'te 14 iş parçacığına kadar iyileşmeye devam eder: tek geçişteki 216,9 ms'ye karşı 105,4 ms.
  • CountDistinct en az kazanır. Farklı değerleri sayma işlemi seri çalışır, bu yüzden P3 en iyi durumda yaklaşık 1,6 kat daha hızlıdır.

Kıyaslamayı Kendiniz Çalıştırın

Kendi donanımınızda aynı program, aynı satırlar ve aynı düzenler.

  1. sgcUI demolarından Demos\PivotGrid\Delphi\Benchmark\sgcPivotGridBenchmark.dpr dosyasını açın. Ayrıntılar o klasördeki README.txt dosyasındadır.
  2. Win64 veya Win32 için, optimizasyon açık ve aralık ile taşma denetimleri kapalı bir sürüm derlemesi olarak derleyin. Paralel hesaplama modları Registered veya Trial sürümünü gerektirir.
  3. Bir konsoldan çalıştırın. Varsayılanlar 1.000.000 ve 10.000.000 satır ile 1, 2, 4, 8 ve tüm CPU'lar iş parçacığı sayılarıdır.
sgcPivotGridBenchmark [--rows=1m,10m] [--threads=1,2,4,8,0] [--out=folder] [--quick]

sgcPivotGridBenchmark
sgcPivotGridBenchmark --rows=1m,10m --quick
sgcPivotGridBenchmark --rows=500k,2m --threads=4 --out=C:\bench
AnahtarAnlamı
--rowsTest edilecek satır sayıları, k ve m son ekleriyle.
--threadsParalel modlar için MaxThreads değerleri. 0 veya all, CPU başına bir iş parçacığı demektir. Tek geçiş her zaman çalışır.
--outÇıktı klasörü, varsayılan olarak exe dosyasının yanındaki bir benchmark klasörü.
--quick5 çalıştırmanın medyanı yerine ısınmadan sonra 1 ölçülen çalıştırma.

Her çalıştırma, makineyi, ayarları ve her ölçümü içeren delphi-<platform>.md, .json ve .csv dosyalarını yazar ve 1.000.000 satırdaki QA bütçelerini denetler. Tüm mantık BenchmarkMain.pas dosyasındadır, bu yüzden üretilen satırları kendi verilerinizle değiştirip aynı zamanlama ve raporları kullanabilirsiniz. Sayılarınız bunlardan çok farklıysa bize bildirin.

Bu Sayıları Dikkatle Okuyun

  • Tek makine. Duvar saati süreleri CPU'ya (çekirdek sayısı, hibrit zamanlama, turbo), bellek hızına ve makinedeki diğer yüke göre değişir.
  • Verinin şekli önemlidir: daha çok üye, daha çok farklı değer veya daha çok ölçü, burada ölçülen düzenlerden daha fazla süre ve bellek harcar.
  • Win32 sayıları, 1 ölçülen çalıştırmalık hızlı bir çalıştırmadan gelir. Win64 sayıları 5 çalıştırmanın medyanlarıdır.
  • Bu sayfa sgcPivotGrid'i diğer pivot bileşenleriyle karşılaştırmaz. Yalnızca sgcPivotGrid sayılarını, herkesin tekrarlayabileceği bir yöntemle yayımlar.

QA bütçeleri ayrıca Mimari yardım konusunda da belgelenmiştir.

En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

sgcPivotGrid ile Geliştirin

sgcUI denemesini indirin ve sgcPivotGrid ürününü Delphi, C++ Builder veya .NET uygulamanıza ekleyin.