Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Array of Stings içerisinde arama yapma
#11
* Siz yine de en son kaydınız 1000 kere art arda sorgulatıp süre testini yapın. 50bin kaydı 50bin döngü sonunda aramak ile  14-15 adımda bulmak arasında %5 demek yanlış okuma olur.

Sorgu profiliniz nedir bilmiyorum ama analizinizi tutarlı yaparsanız direkt iOrta nokta değerini kalan eleman sayısının %50'si değil direkt hedef daha yakın bir noktaya da konumlandırabilirsiniz.  

* İlk karakterleri tekrar eden bir sürü kayıt var değil mi ? 
* Deyin ki ben (3 veya 4) karakter tekrar edenleri gruplayıp teke düşüreceğim. Bunu başka bir ARRAY'a alıp index ile elinizde arayacağınız string değerinin ilk 3 veya 4 karakteri hangi elemandan başladığını ve bittiğini burada sorgulayın
* sonra da ana array'deki idxBas ve idxSon değerini direkt bu alt index güdümüyle konumlatıp performansı katlayabilirsiniz.

*** Sihrinizi kullanın, eGPU vs imkanınız olsa ne olmasa ne. Bu performans analizlerini yapmadıkça gerçek potansiyeli elde edemeyiz. 

Örneğin. 
00003e3b9e5336685200ae85d21b4f5e
0002ac0d783338cfeab0b2bdbd872cda
0004d0b59e19461ff126e3a08a814c33
00053f5e11d1fe4e49a221165b39abc9
0006246bee639c7a7b11a08e34dd3cc6
0006aabe0ba47a35c0b0bf6596f85159
0006dd05ea1e999ddaa041a7091b7b36
0007789b118e4710fc0e7c8758a6532a
0007cda84fafdcf42f96c4f4adb7f8ce
000871c1fc726f0b52dc86a4eeb027de
000a91f3e374e6147d58ed1814247508
000c076c390a4c357313fca29e390ece
000cb7efa8a05429dd5309b4bea2eb0c
000d0c74074191add6f22e0004db8f76
000dd3543ac84d906eae52e7c779bb2a
000e82a96e908e73372bed4e5cb98096
00106ac9184e7d54b570d0f0cb0c38b2
00126b47d5502dfb7d01f750ad23d813
0012a83c1e6cda9d73a22dbeaac47e8f
0012e5ac66e6927d61c675cef8548bee
0014fcb3db4c8459d26309b177005b10
00185f45337c418db73f253e8b967c6c
001ab2fa029c064a45e41f8b2644a292
001b8e3cf76f4e64cbe5be9882db4aa0
001c728a3046207c685f7f478f4bb41b
001d3439223b7bb23ed89b9c8890d096
001d47bd412e7c944a91f0e63fafa70c
001d908c7637618bb0a8af0c8be5cd41
001f35b87b35111bcaf1087426d2884e
001fca6b304504b620c727b498b2d814
0023a1e3447fdb31836536cc903f1310
0023daa5a44ef6fbe42379f24e00254c
00254d816728ef385187c60b08cb5c10
0025ed4265e8272f5d0c95c4c49fbd38
00275937100699204a3d5ae3caf7190d
0028a24e18e166c292689023e6c22e09
0029f088c57ad3b6ec589f9ba4f7a057
002c3a40ac50dc870f1ff386f11f5bae
002df12177ee1c5bc256a352bc9af996
002f8568c2135f87cbdf850e699c5f1e
002f9c8cee878b64a747a2c211da7d83
002fdf1e30206e2b0289c5bdc7d5a369
0035ae72e4bf57671fc69b8cf98d9e09
00368789723d67f4d768abd29b985b24
0038c2d25686470c660de62bf5466fe3
003a8eb4813be2f8c5ad692ff1866162
003af5a042e00ac9b489153a81d676ca
003bed21fddc817050c8fa11897fe660
003d859bbd84a526b9e06340ce7d185f
003dd617c12d444ff9c80f717c3fa982
003fd8188c1a5913a61bba3db2c670e8
004083e4d334ba508ba2c419fa300fd7
00411460f7c92d2124a67ea0f4cb5f85
00430c0c1fae276c9713ab5f21167882
0043182ba7d89227317c69636fa526f2
0044deeec43ded19b952125079eb1781
00482b9bed15a272730fcb590ffebddd
004881ebe3826cf16cfd124968f2a5bb
004978819088d183a8f9841c6d2aa432
00498fd626d602ffabe6acc9636155b7
004a68efcee088ddeaaca5c5a3afaa2f
004acbc8eefec9fe0629b15f52b94bcf
004bd77f07742ad928539b001cae96da
004dbbb73c0e3933d191fa195500d018
004eef55e164cde4b29b93bd64c6d468
00509e33150cba19d677c83ad03febae
00532c4adc6d5dadb6d58e9de817b59a
0054c9f76e4f89e69f3cfbc10a5d7560
0055a5709f2388ee34e6a39c4719fccb
0059872d8926933c13bda07eca8409ad
005b00cc243fb4f39296fa0f16a21482
005b0c27e7224dabb8c1c7346ceea228
005c03bfd9d4df48aa46f6e6dfb92439
005cbfa3ec6690c005d1de9182683241
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#12
Haklısınız,
48129 kayıt arasından matchstr ile sizin bölerek arama arasında yaklaşık 3 kat fark çıktı, 350/sn iken 1020/sn oldu, bu arada ne kadar çok "if then" sorgulaması o kadar çok yavaşlama diyebilirim.

teşekkürler.
WWW
Cevapla
#13
Sorgulama örneğinizi aşağıdaki ile karşılaştırır mısınız ? Bence arada işlem yapıyor ve o da süreye dahil oluyor.

10000 defa 52bin kaydın sonu elmanı soruldu.

Sonuç bildireyim... 
SearchArray için Başla Saat : 5.06.2021 15:45:17
SearchArray için Bitiş Saat : 5.06.2021 15:45:17
SearchArray Süre (milisec)  : 0

MatchStr için Başla Saat : 5.06.2021 15:45:17
MatchStr için Bitiş Saat : 5.06.2021 15:45:58
MatchStr Süre (milisec) : 40008


procedure TForm1.Button5Click(Sender: TObject);
var
  LSrc  : String;
  i     : Integer;
  LBas, LSon : TDateTime;
begin
  Memo1.Lines.Clear;
  LSrc := FArray[ high(FArray) ];

  LBas := Now;
  Memo1.Lines.Add('SearchArray için Başla Saat : ' + DateTimeToStr( LBas ) );
  for i := 1 to 10000 do begin
    if SearchArray( LSrc, FArray ) then ; //Showmessage('Bulundu') else Showmessage('Maalesef.... ');
  end;
  LSon  := Now;
  Memo1.Lines.Add('SearchArray için Bitiş Saat : ' + DateTimeToStr( LSon ) );
  Memo1.Lines.Add('SearchArray Süre (milisec)  : ' + IntToStr( System.DateUtils.MilliSecondsBetween( LBas, LSon ) ) );

  LBas := Now;
  Memo1.Lines.Add('MatchStr için Başla Saat : ' + DateTimeToStr( LBas ) );
  for i := 1 to 10000 do begin
    if MatchStr( LSrc, FArray ) then ; //Showmessage('Bulundu') else Showmessage('Maalesef.... ');
  end;
  LSon  := Now;
  Memo1.Lines.Add('MatchStr için Bitiş Saat : ' + DateTimeToStr( LSon ) );
  Memo1.Lines.Add('MatchStr Süre (milisec) : ' + IntToStr( System.DateUtils.MilliSecondsBetween( LBas, LSon ) ) );
end;


Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#14
Doğrudur, arada birçok işlem yapıyor o işlemlerin sonucunda çıkan değeri array içerisinde arıyor hocam.
WWW
Cevapla
#15
Çıkan sonucu arama kısmında süreyi 0'a indirdik diyelim.

* Geriye arada yapılan işlemler blok işlemlerse yani asenkron ise, bağımsız çalışacak thread'ler halinde çalışma yaparsanız sorununuz kalmıyor demektir.

Başarılar.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  cxGrid>FindPanel Arama Yapılacak Kolonları Belirleme hi_selamlar 15 9.872 30-03-2026, Saat: 12:33
Son Yorum: barutali
  Rest servis api uygulaması yapma tuna 13 1.390 17-10-2025, Saat: 18:40
Son Yorum: tuna
  Rest.JSON array serilize hk yhackup 11 1.980 28-11-2024, Saat: 12:35
Son Yorum: delphi.developer
  Çoklu Create yapma Kral 5 1.441 20-05-2024, Saat: 10:07
Son Yorum: RAD Coder
  Json Data Binding ile oluşturulan json içine Array ekleme aegean 4 1.629 17-05-2024, Saat: 12:36
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi