Ini Spec Desktop yang saya gunakan buat ngetes tadi, cuman pakai i3 @ 3.3 Ghz, OS 64 Bit dengan RAM 8 Gb



On 24-08-2013 17:04, lkm jktind wrote:
 

Pak   De Premor

Tanya :  Komputer yg bapak gunakan itu dengan spek seprti apa ? dan berapa memory nya ?


dengan komputer ku , berbeda jauh hasilnya ?



Awal       Optimasi 1 Optimasi 2
589.531,00  detik 35.313,00  detik 35.547,00  detik
24.063,00  detik 22.227,00  detik 22.344,00  detik
25.898,00  detik 23.828,00  detik 24.336,00  detik
26.133,00  detik 23.516,00  detik 23.750,00  detik










2013/8/24 De Premor <[email protected]>
Idem sama mis Jan



Optimasi 1 : Menambahkan routine untuk mematikan AutoCalculation
Optimasi 2: Mengganti routine di Tes3  => Range("C" & r.Row) = r.Row menjadi r = r.Row

Kenapa di Optimasi 2 saya ganti, ya karena disitulah kelebihan For Each...Next, si "r" itu sudah ketahuan dengan jelas tempatnya dan segala sesuatunya, jadi tidak perlu ditunjukin lagi, jadi bisa menghemat waktu si excel buat mengecek r.Row itu isinya berapa.

CMIIW



On 24-08-2013 14:10, Jan Raisin wrote:
 
boleh jawab kan pak Hendrik..

sepengetahuan Jan, For Each - Next bekerja lebih cepat dibandingkan dengan For To - Next, karena pada For Each tidak ada proses menghitung lebih dahulu
ilustrasinya adalah begini:

Di atas meja makan ada combro (kenapa combro? karena Jan senang makan combro xixixixi ^_^)

perintah 1: Untuk setiap combro yang ada, makan sampai habis >> for each
akan lebih cepat prosesnya jika dibandingkan dengan

perintah 2: Untuk combro ke 1 sampai ke sekian makan sampai habis >> for to
karena pada perintah ke-2 ada proses menghitung dahulu sebelum Be-Exceller memakan combro yang ada di atas meja

Tetapi hal ini akan akan berbeda jika ada pekerjaan yang harus dijalankan lagi di dalam blok for each
pekerjaannya mana? bisa dilihat dari setiap titik yang ada dalam script
1 buah titik mewakili 1 buah pekerjaan atau proses

misal:
range("a1").select
selection.value = 1

akan diproses lebih lama dibandingkan script
range("a1").value = 1

walau pun perbedaannya di komputer sekarang hampir tidak terasa

coba lihat di prosedur Tes3 dan Tes4 saat akan memasukan nilai ada 1 buah pekerjaan yang harus dilakukan dahulu yaitu mencari nilai barisnya terlebih dahulu
sedangkan di prosedur Tes2 tidak ada pekerjaan tersebut

oia.. Jan mau nyumbang script.. tapi minta tolong semua batasannya diturunin dari 100k baris menjadi 10k baris
karena pada saat proses transpose untuk 100k selalu gagal.. mungkin nanti mr Kid atau pak Anton bisa memberikan penjelasan penyebab gagalnya transpose tersebut.

prosesnya memanfaatkan array, karena proses baca tulis ke range lebih lambat dibandingkan proses baca tulis melalui array

Sub Tes5()
    Dim TStart As Single
    Dim myArray(0 To 9999) As Long
    Dim i As Long
    Dim rng As Range
    
    TStart = Timer
    For i = 1 To 10000
        myArray(i - 1) = i
    Next i
    Set rng = Range("o1:o10000")
    rng.Value = Application.WorksheetFunction.Transpose(myArray)
    Range("E5").Value = Format(Timer - TStart, "#,##0.0000")
End Sub

silakan coba dibandingkan hasilnya, di komputer Jan script tersebut berjalan 32 x lebih cepat dibandingkan Tes2

salam,


-Miss Jan Raisin-


Pada 24 Agustus 2013 11.25, hendrik karnadi <[email protected]> menulis:
 
Dear Be Excellers,
Terlampir adalah hasil uji coba (tes) Looping For ...  Next dan For each ...  Next pake timer.

Pertanyaan:
Mengapa dengan menggunakan For ...  Next (Tes2, tanpa formula) hasilnya lebih cepat dibandingkan dengan For each ... Next (Tes3 dan Tes 4).

Salam,
HK




Kirim email ke