lostyazilim
tr.link

javascript işlemci kullanımı azaltma

5 Mesajlar 1.037 Okunma
acebozum
tr.link

tahamucasiroglu tahamucasiroglu WM Aracı Kullanıcı
  • Üyelik 17.02.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek öğrenci / bilgisayar müh
  • Konum Trabzon
  • Ad Soyad A** M**
  • Mesajlar 4
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
Merhaba arkadaşlar web alanına yeni başladım. Yakın zamanda JS kullanarak sayaç yaptım fakat operada incelediğim zaman işlemcinin %35 ini kullandığını gördüm. Bunları azaltmak için hangi konuları öğrenmeli yada ne tür teknikler kullanmalıyım. şimdiden teşekkürler


var t = new Date();
var date;
var h,m,s,ms,tarih;
var ah,am,as;

function saat(x){
if(x<=9){
return "0"+x;
}else{
return x;
}
}

function msaat(x){
if (x<=9) {
return "00"+x;
}else if(x<=99){
return "0"+x;
}else{
return x;
}
}

setInterval(function(){
date = new Date();

h = date.getHours();
m = date.getMinutes();
s = date.getSeconds();
ms = date.getMilliseconds();

h = saat(h);
m = saat(m);
s = saat(s);
ms = msaat(ms);

tarih=h+":"+m+":"+s+":"+ms;

document.getElementById("taha").innerHTML=tarih;
},1)

function alarm(){
setInterval(function(){
ah = document.getElementById("asaat").value;
am = document.getElementById("adak").value;
as = document.getElementById("asan").value;

if(ah!="" && am!="" && as!=""){
document.getElementById("taha3").style.display="block";
document.getElementById("taha3").innerHTML="Alarm Kuruldu"+ah+":"+am+":"+as;

if(ah == h && am == m && as == s){
document.getElementById("taha4").innerHTML='';

}

}

},1000)}
 

 

wmaraci
reklam

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)
Kodunu görmeden nasıl yorum yapabiliriz?
 

 

no time for caution

tahamucasiroglu tahamucasiroglu WM Aracı Kullanıcı
  • Üyelik 17.02.2017
  • Yaş/Cinsiyet 26 / E
  • Meslek öğrenci / bilgisayar müh
  • Konum Trabzon
  • Ad Soyad A** M**
  • Mesajlar 4
  • Beğeniler 1 / 0
  • Ticaret 0, (%0)
kodu ekledim ama sorum daha çok genel olarak yani herhangi bir durumda nasıl daha performanslı yapılır.
 

 

kelebek kelebek WM Aracı Kullanıcı
  • Üyelik 11.05.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Geliştirici
  • Konum Malatya
  • Ad Soyad E** K**
  • Mesajlar 3142
  • Beğeniler 60 / 764
  • Ticaret 5, (%100)
Genel geçer bir çözüm yolu yok, bazı best practicesleri uygulamayı deneyebilirsin. Yazdığın kod kullanıcı tarafında çalışmak zorundaysa WebAssembly kullanmayı deneyebilirsin.

https://www.keycdn.com/blog/javascript-performance

https://medium.com/@OPTASY.com/webassembly-vs-javascript-is-wasm-faster-than-js-when-does-javascript-perform-better-db86d2ecf2cc
 

 

wmaraci
wmaraci

Decimas Decimas WM Aracı Kullanıcı
  • Üyelik 19.04.2015
  • Yaş/Cinsiyet 26 / E
  • Meslek Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** E**
  • Mesajlar 820
  • Beğeniler 1 / 302
  • Ticaret 1, (%100)

tahamucasiroglu adlı üyeden alıntı

kodu ekledim ama sorum daha çok genel olarak yani herhangi bir durumda nasıl daha performanslı yapılır.


Genel olarak OOP öğrenmen gerek ama hakkıyla öğenmelisin ki gördüğün her söküğü dikebilirsin, spagetti ile hep yarı yolda kalırsın.

Koduna baktığımda çok basit bir mantık hatası gördüm,

setInterval(function(){
date = new Date();

h = date.getHours();
m = date.getMinutes();
s = date.getSeconds();
ms = date.getMilliseconds();

h = saat(h);
m = saat(m);
s = saat(s);
ms = msaat(ms);

tarih=h+":"+m+":"+s+":"+ms;

document.getElementById("taha").innerHTML=tarih;
},1)


en son satırda interval 1 ms ayarlanmış. 1 milisaniyelik hassaslıkta ne yapıyorsun? Eğer atomik hesaplamalar vs yapmıyorsan 1ms tabiki çok yüksek işlem gücü gerektirir. Bizim için 1 saniye makine için 1000ms demek. Yani yukardaki kod her saniye yaklaşık olarak 1000 kere çalışıyor. Ayrıca bu 1000 kere çalışan bloğun içinde new Date(); demişsin, yine çeşitli fonksiyonlar çalıştırmışsın.

Eğer ms değerine ihtiyacın varsa 250 ms gibi daha makul bir interval seçersen hem makineyi daha az yorarsın hem de 250ms gecikmeyi insan gözü pek algılayamaz zaten.
tahamucasiroglu yetkilibiri

kişi bu mesajı beğendi.

no time for caution
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al