sgcGrid Ölçümler

Bu sayfadaki her sayı, tek bir makinede sgcGrid QA performans kapıları ve QA paketiyle birlikte gelen iki ölçüm programıyla ölçüldü. Hiçbir şey tahmin edilmedi veya dışarıdan türetilmedi. Kendi sayılarınızı elde etmek için aynı programları kendi donanımınızda ve kendi veritabanınızda çalıştırın.

Öne çıkan sayılar

ÖlçümWin32Win64
100.000 satırlık bir grid'in 1920 x 1080 karesi, 12 sütun (QA kapısı C1)1,47 ms1,29 ms
Yanıp sönen hücreler ve 3 biçim kuralıyla aynı kare1,67 ms1,46 ms
Bir işçi iş parçacığından sıralı 1.000 satırlık grid'e canlı güncellemeler, kareler 60 Hz ile çizilir60,0 fps ile 1.000 güncelleme/sn, 0 kaçırılan kare60,0 fps ile 1.000 güncelleme/sn, 0 kaçırılan kare
Aynı grid 60 fps'i korurken tek bir işçi iş parçacığının en yüksek güncelleme hızı1.552.858 güncelleme/sn2.001.921 güncelleme/sn
Sunucu modu, 10.000.000 satırlık SQLite tablosu: ilk çizilen sayfaya kadar açılışçalıştırılmadı117,3 ms (tahmini sayıyla 2,1 ms)

2026-11-04 tarihinde ölçüldü. Aşağıdaki tablolar yöntemi, makineyi ve her sayıyı verir.

Sayılar nasıl ölçülür

Kareler

Kare, 1920 x 1080 bir grid'in görünen penceresidir; TsgcGridRenderer tarafından pencere olmadan raster tuvaline çizilir ve bu, VCL ve FireMonkey grid'lerini çizen aynı koddur. Döngüde pencere de GPU da yoktur. Grid, canlı bir grid gibi her karede biraz kayar. C1 ve diğer kare kapıları, ısınmadan sonra 60 karelik 5 çalıştırmanın medyanını alır.

Model işlemleri

Gruplama, filtreleme, sıralama ve özetler, çizici olmadan grid veri modelinde çalışır. Her sayı, ısınmadan sonra 5 çalıştırmanın medyanıdır; kapı öyle belirtiyorsa 12 dönüşümlü çalıştırmanın en iyisidir. Her kapının bir bütçesi vardır ve bir sayı bunu aştığında QA çalıştırması başarısız olur.

Canlı güncellemeler

Bir işçi iş parçacığı, LiveTicker demosunun yaptığı gibi iş parçacığı güvenli UpdateRow ile fiyat güncellemeleri yazar. Ana iş parçacığı her 16,67 ms'de (60 Hz) bir kare çizer. Her kare, çizilen bir grid'in yaptığı gibi değişen görünümü yeniden sıralar. Ölçüm, saniyede yazılan güncellemeleri, saniyede çizilen kareleri, yuvasını kaçıran kareleri ve kare başına çizim süresini bildirir.

Sunucu modu

TsgcGridServerProvider_DataSet, oluşturulmuş bir tabloyu FireDAC üzerinden sayfalar. Her adım, satırları yüklendiğinde ve kare çizildiğinde biter. Her sayı, veritabanı dosyası işletim sistemi önbelleğindeyken ısınmadan sonra 5 çalıştırmanın medyanıdır. Atlamalar çalıştırmadan çalıştırmaya 2.000 satır arayla düşer; böylece her çalıştırma grid'in sayfa önbelleğinden değil veritabanından okur.

Test makinesi

CPUIntel Core Ultra 5 245T, 14 çekirdek, 14 mantıksal işlemci
Bellek31,5 GB
DiskNVMe SSD, Phison 1 TB
İşletim sistemiWindows 11 Pro 26H2, derleme 26300.9711
DerleyiciDelphi 13 (derleyici 37.0), Win32 ve Win64 release derlemeleri
VeritabanıFireDAC üzerinden SQLite 3.42.0, gömülü ve statik bağlı
Kaynak2026-11-04 tarihli sgcGrid geliştirme ağacı (yerel değişikliklerle svn revizyonu 20169)

Makine yalıtılmış bir ölçüm sunucusu değil, bir geliştirici iş istasyonuydu. Her ağır çalıştırma makine genelinde bir kilit tuttu; bu yüzden aynı anda hiçbir derleme veya test çalışmadı.

QA performans kapıları

sgcGrid QA paketinin perf grubu, Win32 ve Win64 üzerinde tek başına çalıştırıldı. Bütçe, kapının uyguladığı sınırdır (Win32 / Win64).

KapıNe ölçülüyorWin32Win64Bütçe
C1Düz kare 1920 x 1080, 12 sütun, 100.000 satır1,47 ms1,29 ms4,09 / 4,32 ms
BiçimliAynı kare, yanıp sönen hücreler ve 3 biçim kuralı (60 karenin ortalaması)1,67 ms1,46 ms25 / 16 ms
GW3Bul vurgularıyla kare, 100.000 satır1,43 ms1,75 ms25 / 16 ms
GW520 sütun, 3 bant düzeyi, 2 sabit sütunla kare, 100.000 satır1,62 ms1,42 ms25 / 16 ms
GW7Resim, ilerleme ve 30 noktalı sparkline sütunlarıyla kare, 100.000 satır2,20 ms3,20 ms25 / 16 ms
F12 sabit sütun ve altbilgiyle, iki yönde kaydırılan kare, 100.000 satır0,56 ms0,50 ms25 / 16 ms
G42 sütuna göre gruplanmış 1.000.000 satırın karesi, hepsi açık0,49 ms0,48 ms25 / 16 ms
D1Her biri 50 satırlık 3 görünür ayrıntı bandıyla kare2,47 ms2,65 ms25 / 16 ms
G1100.000 satırı 2 sütuna göre grupla, 2 özet, oluştur ve düzleştir15,11 ms11,98 ms60 / 40 ms
G21.000.000 satırı 2 sütuna göre grupla, 2 özet, oluştur ve düzleştir155,37 ms132,61 ms700 / 450 ms
G31.000.000 satırlık görünümün bir grubunu aç veya kapat4,16 ms3,28 ms25 / 15 ms
G5Altbilgi özetleri, 100.000 satırlık 5 sütun5,64 ms2,34 ms25 / 15 ms
T1100.000 satırlık ağaç, derinlik 8'e kadar, tamamen açık oluştur ve düzleştir20,42 ms22,80 ms90 / 60 ms
GW0Sıralı görünümün yeniden oluşturulması, 1.000.000 satır253,45 ms240,29 ms268,24 / 259,62 ms
GW11.000 üyeli bir metin sütununun benzersiz değerleri, basamaklı filtreyle, 1.000.000 satır55,61 ms48,42 ms450 / 300 ms
GW21.000 değerden 500'lük liste artı bir koşulla filtre, 1.000.000 satır50,75 ms48,02 ms225 / 150 ms
M1Verilerin üstündeki satır görünümünün belleği, 2 sütuna göre gruplanmış 1.000.000 satır20,07 MB20,09 MB32 MB
X1100.000 satır x 12 sütunun XLSX dışa aktarımı, 2 grup düzeyi, özetler1.693,87 ms1.002,71 ms4.500 / 3.000 ms
L2Bir iş parçacığı saniyede 10.000 satır eklerken sonu izleyen günlük görüntüleyici: saniyede çizilen kareler38,87 fps38,67 fpsen az 20 fps
L2Aynı çalıştırma: giriş gecikmesinin 99. yüzdelik değeri4,22 ms2,83 ms33 ms

60 fps ile canlı güncellemeler

sgcGridBench_Live: bir işçi iş parçacığı rastgele bir satırın fiyatını, değişimini, hacmini ve zamanını UpdateRow ile yazarken, ana iş parçacığı her 16,67 ms'de sıralı, yanıp sönen 1920 x 1080 bir grid çizer. Durum başına 5 saniye. Kaçırılan yuva, bir sonrakinin başlamasından sonra biten karedir.

SatırHedef hızPlatformGüncelleme/snKare/snKaçırılan yuvaÇizim, medyanÇizim, p99Çizim, maks.
1.0001.000/sWin321.00060,001,28 ms2,46 ms2,57 ms
1.0001.000/sWin641.00060,001,36 ms2,41 ms2,45 ms
1.00010.000/sWin329.99860,001,43 ms2,79 ms2,98 ms
1.00010.000/sWin649.99860,001,29 ms2,46 ms3,17 ms
1.000olabildiğince hızlıWin321.552.85860,001,26 ms3,09 ms3,35 ms
1.000olabildiğince hızlıWin642.001.92160,001,26 ms2,54 ms3,28 ms
100.0001.000/sWin321.00060,0010,52 ms13,72 ms15,92 ms
100.0001.000/sWin641.00060,0010,50 ms13,99 ms14,68 ms
100.00010.000/sWin329.96647,66214,70 ms40,33 ms42,03 ms
100.00010.000/sWin649.99754,22913,59 ms35,10 ms39,86 ms

100.000 satırlık sıralı bir grid, sıralanan sütunun değiştiği her karede görünümünü yeniden sıralar; bu yüzden çizim süresi satır sayısıyla artar. Sıralı olmayan sütunların güncellemeleri görünümü korur ve MaxFPS, yalnızca canlı görünmesi gereken bir grid'in kare hızını düşürebilir.

1.000.000 ve 10.000.000 satırlık veritabanı tabloları

SQLite 3.42.0 üzerinde sgcGridBench_Server, Win64. Tabloda karışık türlerde 12 sütun (tamsayı, metin, kayan nokta, tarih ve saat, mantıksal), dizinli bir tamsayı anahtarı ve dizinli bir müşteri sütunu vardır; veriler deterministiktir. Her adım, satırları yüklenmiş ve 1920 x 1080 kare çizilmiş olarak biter. Isınmadan sonra 5 çalıştırmanın medyanı.

Adım1.000.000 satır10.000.000 satırVeritabanında ne çalışır
İlk çizilen sayfaya kadar açılış2,8 ms117,3 msŞemadan sütunlar, kesin COUNT(*), ilk sayfa
Tahmini sayıyla açılış2,1 ms2,1 msCountMode = gscEstimated: yalnızca ilk sayfa, sayfalar dolu geldikçe sayı büyür
Kesin satır sayısı0,2 ms115,6 msSELECT COUNT(*)
Ortaya atlama40,1 ms378,8 msOrta satırda bir sayfa, LIMIT ve OFFSET
Sona atlama75,0 ms735,4 msSon sayfa, LIMIT ve OFFSET
Dizinli bir sütuna göre sıralama2,5 ms119,3 msDizini üzerinden ORDER BY customer, artı yeni sorgunun kesin sayısı
Dizini olmayan bir sütuna göre sıralama106,9 ms1.169,3 msORDER BY amount DESC, tam tarama
Filtre oluşturucu koşulu97,5 ms975,7 msWHERE region = 'North' AND qty > 50, sayı ve ilk sayfa (40.000 ve 400.000 satır eşleşir)
Sunucu gruplaması, çizilen grup satırları266,5 ms3.917,8 msHer grubun satır sayısıyla GROUP BY region (12 grup), tam tarama
Çalıştırma sonrası işlem belleği76,5 MB75,7 MBÖlçüm işleminin çalışma kümesi, SQLite sayfa önbelleği dahil

Grid'in kendisi yalnızca ekrandaki sayfaları okur, bu yüzden kendi maliyeti sabit kalır. Tabloyla birlikte büyüyen, veritabanının işidir: kesin sayı, derin bir atlamanın OFFSET değeri ve dizini olmayan bir sütunda sıralama veya gruplama. Sıralanan veya gruplanan sütunda bir dizin ya da tahmini sayı, bu adımları kısa tutar. 10.000.000 satırlık tabloyu oluşturmak 42,5 sn sürdü ve aynı dosyadaki ikinci çalıştırma bu sayıların %25 içinde değerler verdi.

SQL Server, PostgreSQL, Firebird ve 100.000.000 satırlık tablolar aynı araçlarla ölçülür. Çalıştırıldıklarında sayıları buraya eklenecektir. O zamana kadar bunlar için hiçbir sayı yayımlanmaz.

Kendi makinenizde ve veritabanınızda ölçün

Ölçüm programları sgcUI kaynağının QA klasöründe, QA\Grid\Bench içindedir. IDE projesi olmayan konsol programlarıdır.

Derleme

build_bench.bat, sgcGridBench_Server.exe ve sgcGridBench_Live.exe dosyalarını Delphi 13 ile Win32 ve Win64 için bin\win32 ve bin\win64 içine derler ve ini dosyasını yanlarına kopyalar.

Sunucu modu

sgcGridBench_Server.exe --rows=10000000 tablo yoksa oluşturur, sonra her adımı ölçer ve bir Markdown raporu ile sayı başına bir CSV satırı yazar. Seçenekler: --ini, --rows, --runs, --db, --generate, --out.

Başka bir motor

sgcGridBench_Server.ini dosyasını düzenleyin: DriverName FireDAC sürücüsüdür (MSSQL, PG, FB veya SQLite), [Params] içindeki her anahtar bağlantıya gider ve Dialect SQL lehçesini seçer. Ini dosyası her motor için bir örnek içerir.

Canlı güncellemeler ve QA kapıları

sgcGridBench_Live.exe --seconds=5 yukarıdaki canlı durumları çalıştırır. İstemci kapıları QA paketinin perf grubudur, sgcGridQA.exe --group=perf; her sayıyı sgcGridQA_perf.txt dosyasına ekler. Boşta bir makinede tek başına çalıştırın.

[Connection]
DriverName=PG

[Params]
Server=localhost
Port=5432
Database=bench
User_Name=postgres
Password=secret

[Bench]
Dialect=postgresql
Table=bench_orders
Rows=10000000
Runs=5
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

sgcGrid'i kendi verilerinizde deneyin

sgcUI deneme sürümünü indirin, ServerModeAndCards ve LiveTicker demolarını açın, sonra ölçümü kendi veritabanınıza yöneltin.