'ın Hız L
Tolga Kale'den çok daha hızlıdırlar, çünkü BASIC sayıları basamak basamak okur ve anlayabileceği bir format haline getirir. Oysa değişkenler BASIC'in her an kullanabileceği bir şekilde saklanmaktadırlar. Örnek olarak aşağıdaki program C-64'ün karakter setini ROM'dan RAM'a taşır. Bu rutin şu şekilde yazılabilir. (1)
Benim saatime göre bu rutin 30 saniye kadar sürmektedir, ama iki sayı yerine değişkenler kullanılınca; ©
ımıtini
56334 PEEK POKE 1
10 Az 12288:B-53248
20 POKE 56334,PEEK(56334)AND254:POKE |
30 FORT-0 TO 2047:POKE
40 POKE 1,PEEK(1)OR4:POKE 56334,PEEK(56334)OR |
rutin yüzde yüzden daha hızlı çalışıyor, yani 12 saniye kadar sürüyor. Şimdi diyeceksiniz ki, tamam da niye 56334 için de değişken kullanmadık. Bu tip iki veya üç kez kullanılan sayılar fazla bir hız sağlamazlar. Biraz önce kullandığımız A ve B sayıları programda 2000'den fazla kullanılıyorlardı. 5) Mümkün olduğunca az REM kullanın: Her ne kadar REM'ler programları anlamada kolaylık sağlasalar da onları hızlandırmazlar. Eğer BASIC bir REM'e rastlarsa bir sonraki satıra gidilmesi gerektiğini anlar ki, bu da zaman gerektirir. Eğer REM kullanmak zorundaysanız bunları ya programın başına ya da ana döngünün dışına koyun. 6) Sıfırları noktalarla değiştirin: BASIC sıfırlarla noktaları aynı yolla algılar ama noktalar (periyodlar) daha çabuk işleme konulurlar. Mesela POKE 53280,0'ı POKE 53280,. değiştirebilirsiniz. Bu sadece tek başına bulunan sıfırlarda işe yarar. BASIC POKE 53280,0'ı POKE 5328.,0 olarak anlar. 7) Gereksiz komut kullanmayın: Bazı programlar pek çok gereksiz komut içerirler. Bunun için en iyi örnek INT fonksiyonudur. Genellikle INT'in gereksiz olduğu POKE 49152,INT(A) gibi komutlar görmüşsünüzdür. Burada doğrudan A kullanılabilirdi çünkü BASIC komutları hiçbir adrese virgüllü sayı kabul etmezler. INT bunun için tek örnek değildir. Siz de programlarınızda buna benzer gereksiz yerlerde kullanılmış komut bulursanız onları çıkarın.
DİĞER NOKTALAR
Eğer yukarıda anlattığımız yolları denediniz ve programlarınız hâlâ çok mu yavaş çalışıyor? Üzülmeyin - İşte size birkaç yol daha: Makine dili kullanın: Bütün programınızı makine dilinde yazmanız gerekmez. Sadece fazla zaman alan yerleri makine dilinde yazarsanız bu sizin için yeterli olacaktır. Bir Compiler kullanın: BASIC'in her satırını makine diline çevirdikten sonra çalışır. Bunu makine otomatik olarak kendisi yapar ama bunu onun yerine yapan programlara Compiler denir. Bu programlar sayesinde programlar normal hallerinden 3-5 kez daha hızlı çalışabilirler. Bu programlar makine dili kadar olmasa da hızlıdırlar. Hızlı rutinler yazmayı deneyin: Önemli rutinlerinizi tekrar inceleyerek kısaltmaya çalışın. Bütün bu yolları kullanarak BASIC hız limitini aşabilirsiniz. İşte size programlarınızı hızlandırmayacak birkaç ipucu: Küçük satır numaralı programlar büyük satır numaralılardan daha hızlı çalışırlar: 1) Küçük satır numaralı programlar büyük satır numaralılardan daha hızlı çalışırlar: Küçük numaralar (10 veya 20) hafızada büyük numaralardan (1000 veya 2000) daha az yer kaplarlar. Böylece BASIC'in onları okuması daha uzun sürer. Eğer BASIC satır numaralarını rakam depolasaydı bu söylediğimiz doğru olurdu ancak BASIC bütün satır numaralarını iki bayt olarak depolamaktadır. 2) Tam sayılı değişkenler ondalık sayılı değişkenlerden daha hızlıdır: Aslında bu mantıklı gibi geliyor. Tam sayılı değişkenler daha az yer kaplıyorlar bunun için normalde hızlı çalışmaları gerek. Oysa ondalık sayılı değişkenler tam sayılılardan çok daha hızlı çalışmaktadırlar. Bunun nedeni BASIC rutinlerinin (toplama, çıkarma gibi) ondalık sayıları kullanmasıdır. Eğer bir tam sayılı değişken kullanılırsa bu ilk önce ondalık sayılı değişkene çevrilir, sonra işlem yapılır ve tekrar tam sayı haline gelir. Bu zaman kaybına neden olur. 3) Alfabede önce gelen harfli değişkenler diğerlerinden daha hızlı çalışırlar: Bazı eski BASIC'lerde bu doğrudur, çünkü BASIC'ler değişkenleri harf sırasına göre dizerler, yani A'ya Z'den daha önce ulaşılır. Ama Commodore BASIC'te değişkenler verildikleri sıraya göre dizilirler, yani bazen Z'ye A'dan önce ulaşabilirsiniz. Tabi Z'yi A'dan önce tanımladıysanız. 21