07-04-2010, 22:31
Merhaba arkadaşlar;
100.000(yüzbin) kayıtlık bir tablomuz var. Amacımız burdaki "isim" alanına ait verileri bir listboxa doldurmak ve doldurma sürelerini hesaplayarak hız testi yapmak. Projemizde 2 adet "ListBox" var. Soldaki listbox Windows Form kontroludur. Sağdaki ise WPF kontroludur dolayısıyla WinForm ve WPF testini yapmış olacağız. Her iki listekutusuna da veriler Access dosyasındaki "Tablo1" isimli tablodan gelmektedir. Aynı testi ekteki Access dosyasında da bulabilirsiniz tabii Access de "ADO" ile aldım ve 100.000 kaydın listekutusuna dolmasını beklemek işkence olduğu için "5.000" kayıt ile yarışa katıldı eski dostumuz Access
Yine de sonuncu olmaktan kurtulamadı ama neyse..
Şimdi kodları inceleyelim ilk önce soldaki listboxa yani WinForm kontrolune verileri nasıl aldığıma bakalım.
Şimdi ise Wpf tarafına bakalım, aslında kodlarda pek bir değişklik yok..
WPF de verileri bind etme kısmını XAML tarafında yaptık..
Not: XAML kodlarını mecburen "PHP" tag ı içinde yazdım yoksa htlm kodu olarak yorumluyor.. Hatta yine " < /" karakterlerini koymadığını farkettim. Taruz'a söyleyelim de "XAML" için de bir düzenleme yapsın
Bendeki pc ye göre "Core2 2.13 Ghz ve 2 gb Ram" ile;
Winform: 9.000 - 10.000 milisaniye aralarında (100.000 kayıt)
WPF: 1.700 - 1.900 milisaniye aralarında (100.000 kayıt) **** Şampiyon ****
Access : 12.000 - 15.000 milisaniye aralarında (5.000 kayıt)
Olarak sonuçlar aldım..
Belki hız testini derinden etkileyecek bazı noktaları kaçırıyor da olabilirim. Aynı verilerle yapılmış aynı yapıda başka testleri görmeyi de çok isterim..
Not: Aslında Access'i, .Net ile kıyasladığım kesinlikle düşünülmesin. Burası Access forumu olduğu için ve Access ile milisaniye cinsinden süre ölçme örneği olması için dahil ettim.
100.000(yüzbin) kayıtlık bir tablomuz var. Amacımız burdaki "isim" alanına ait verileri bir listboxa doldurmak ve doldurma sürelerini hesaplayarak hız testi yapmak. Projemizde 2 adet "ListBox" var. Soldaki listbox Windows Form kontroludur. Sağdaki ise WPF kontroludur dolayısıyla WinForm ve WPF testini yapmış olacağız. Her iki listekutusuna da veriler Access dosyasındaki "Tablo1" isimli tablodan gelmektedir. Aynı testi ekteki Access dosyasında da bulabilirsiniz tabii Access de "ADO" ile aldım ve 100.000 kaydın listekutusuna dolmasını beklemek işkence olduğu için "5.000" kayıt ile yarışa katıldı eski dostumuz Access
Yine de sonuncu olmaktan kurtulamadı ama neyse..Şimdi kodları inceleyelim ilk önce soldaki listboxa yani WinForm kontrolune verileri nasıl aldığıma bakalım.
vb.net
- Public Sub Baglanalim()
-
- oleCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=beab.mdb")
-
- oleComd = New OleDbCommand(strSql, oleCon)
-
- Dim dtst As New DataSet()
-
- Dim adpt As New OleDbDataAdapter()
-
- Try
-
- oleCon.Open()
-
- adpt.SelectCommand = oleComd
-
- adpt.Fill(dtst, "Tablo1")
-
-
- ListBox1.DataSource = dtst.Tables("Tablo1")
-
- ListBox1.DisplayMember = "isim"
-
-
-
- Catch ex As Exception
-
- Finally
-
-
- End Try
-
- End Sub
-
-
-
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
-
- Dim baslangic As DateTime = DateTime.Now
-
- Baglanalim()
-
- Dim bitis As DateTime = DateTime.Now
-
- Dim fark As TimeSpan = bitis - baslangic
-
- Label1.Text = "Süre: " & fark.TotalMilliseconds.ToString() & " milisaniye"
-
- End Sub
Şimdi ise Wpf tarafına bakalım, aslında kodlarda pek bir değişklik yok..
vb.net
- Public Sub Baglanalim()
-
- oleCon = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=beab.mdb")
-
- oleComd = New OleDbCommand(strSql, oleCon)
-
- Dim dtst As New DataSet()
-
- Dim adpt As New OleDbDataAdapter()
-
- Try
-
- oleCon.Open()
-
- adpt.SelectCommand = oleComd
-
- adpt.Fill(dtst, "Tablo1")
-
- Listbox1.DataContext = dtst
-
-
-
- Catch ex As Exception
-
- Finally
-
-
- End Try
-
- End Sub
WPF de verileri bind etme kısmını XAML tarafında yaptık..
Not: XAML kodlarını mecburen "PHP" tag ı içinde yazdım yoksa htlm kodu olarak yorumluyor.. Hatta yine " < /" karakterlerini koymadığını farkettim. Taruz'a söyleyelim de "XAML" için de bir düzenleme yapsın

PHP
- <UserControl x:Class="UserControl1"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="160" Height="258" Name="UserControl1">
- <Grid Width="160">
-
- <ListBox Margin="0,29,0,27" ItemsSource="{Binding Path=Tablo1}" Name="Listbox1">
-
- <ListBox.ItemTemplate>
-
- <DataTemplate>
-
- <StackPanel>
-
- <TextBlock Text="{Binding Path=isim}" FontSize="12" />
-
-
-
- </StackPanel>
-
- </DataTemplate>
-
- </ListBox.ItemTemplate>
-
- </ListBox>
- <Button Height="23" Margin="41,0,44,0" Name="Button1" VerticalAlignment="Top">Wpf</Button>
- <TextBlock Height="21" Margin="1,0,0,3" Name="TextBlock1" VerticalAlignment="Bottom" />
- </Grid>
- </UserControl>
Bendeki pc ye göre "Core2 2.13 Ghz ve 2 gb Ram" ile;
Winform: 9.000 - 10.000 milisaniye aralarında (100.000 kayıt)
WPF: 1.700 - 1.900 milisaniye aralarında (100.000 kayıt) **** Şampiyon ****
Access : 12.000 - 15.000 milisaniye aralarında (5.000 kayıt)
Olarak sonuçlar aldım..
Belki hız testini derinden etkileyecek bazı noktaları kaçırıyor da olabilirim. Aynı verilerle yapılmış aynı yapıda başka testleri görmeyi de çok isterim..
Not: Aslında Access'i, .Net ile kıyasladığım kesinlikle düşünülmesin. Burası Access forumu olduğu için ve Access ile milisaniye cinsinden süre ölçme örneği olması için dahil ettim.
Javascript
- this.setState({sign:"Here comes the sun...."})

)
