lostyazilim
tr.link

Web yazılım dillerini nasıl optimize edebiliriz?

8 Mesajlar 1.191 Okunma
acebozum
tr.link

ASametYildirim ASametYildirim Saygı, Sevgi, Anlayış. Kullanıcı
  • Üyelik 16.06.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Bilgisayar mühendisi öğrencisi
  • Konum Ankara
  • Ad Soyad S** Y**
  • Mesajlar 3826
  • Beğeniler 2399 / 1874
  • Ticaret 97, (%100)
Merhaba hocalarım. Kafayı taktım bir türlü bu sorudan kendimi alamıyorum. Geçenlerde temamda 10.000 den fazla gereksiz kodu temizledim ama daha iyisi için bir öneriniz var mıdır?

Mesela "print" yerine "echo" kullanmak, sürekli kod yazmak yerinr değişken oluşturmak. Sürekli değişke yerine fonksiyon yazmak gibi.

Not: Sadece Html, CSS, PHP ve JavaScript (kütüphaneleri dahil) dilleri için öneri verirseniz sevinirim :)

2.Not: Optimizeden kastım sunucu yükünü hafifletmek ve site hızını arttırmak. Nolur tarayıcı önbellekleme felan demeyin ben kodları optimize etmekten bahsediyorum. :)
Mfa95

kişi bu mesajı beğendi.

elektronikssl
webimgo

mxaksoy mxaksoy Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 23.03.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad M** A**
  • Mesajlar 1358
  • Beğeniler 482 / 344
  • Ticaret 3, (%100)
define belirlemek ben şuanki yaptığım andesite adlı kredi 2 bakiye yazılımında define ile değerini belirleyip yazdırdım. Çalışma Mantığı şu şekilde:
Kullanıcı Siteye Girer
Sorgu ve Kontroller Modülde Kontrol edilir
indexe aktarılır.
İşlemler tek dosyada toplanır (form kayıt, giriş, kredi alma vs)
sonuç aktarılır ve sadece 1 post'a izin verilir.
ASametYildirim

kişi bu mesajı beğendi.

mxaksoy mxaksoy Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 23.03.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek Webmaster
  • Konum İstanbul Avrupa
  • Ad Soyad M** A**
  • Mesajlar 1358
  • Beğeniler 482 / 344
  • Ticaret 3, (%100)
ASametYildirim dil dosyası ise:
define("ls_login_username", "Kullanıcı Adı"); //Label ve placeholder için kullanılabilir gibisinden.
ASametYildirim

kişi bu mesajı beğendi.

Mfa95 Mfa95 Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 06.06.2018
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Eskişehir
  • Ad Soyad M** A**
  • Mesajlar 128
  • Beğeniler 83 / 30
  • Ticaret 0, (%0)
Evet hocam temalarda en büyük problem gereksiz veya kullanilmayan şişirilmiş kod yığınları. Gereksiz yük bindiriyor. Bende baya araştırmıştım da öneriler hep kendini tekrarlıyor. Şuan sorgu sayısını azaltmaya uğraşıyorum ben de. Sürekli veritabanına girdi çıktı yapan sorgular var bunlara odaklanmaniz gerekiyor. Sorgu sayısı azaldıkça sunucu yükü azalacak ve hızlanma sağlanacaktır
ASametYildirim

kişi bu mesajı beğendi.

wmaraci
wmaraci

woakazam woakazam WM Aracı Telefon Onaysız
  • Üyelik 02.07.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek Öğrenci
  • Konum Eskişehir
  • Ad Soyad A** C**
  • Mesajlar 67
  • Beğeniler 0 / 35
  • Ticaret 1, (%100)
Böyle şeyler yük bindirmez ki :)

Saniye de 4 Milyar kere titreyen işlemcilerden bahsediyoruz. Yük nasıl biner biliyor musunuz, 100.000 satır içinden saniye başına SQL sorgusu döndürmek gibi. Ki o bile gıdıklar.

Kodları daha derli toplu yazman güzel bir şey fakat sunucuya yük bindirmez.

Özetle print yerine echo yazman sunucuyu daha az yorar diye bir şey yok.
NETEOR mxaksoy

kişi bu mesajı beğendi.

WmOptimize WmOptimize Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 01.11.2015
  • Yaş/Cinsiyet 37 / E
  • Meslek WebProgramlama
  • Konum İstanbul Anadolu
  • Ad Soyad H** F**
  • Mesajlar 410
  • Beğeniler 151 / 174
  • Ticaret 3, (%100)
Css'de aynı özellikleri farklı isimlerle kullanıp birden çok sınıf ile işlem görmek.

Örneğin;
.sinif1{
float:left;
text-decoration:none;
background:#ddd;
color:#333;
}
.sinif2{
float:left;
text-decoration:none;
background:#ddd;
color:#111;
}


Yerine;
.sinif1,.sinif2{
float:left;
text-decoration:none;
background:#ddd;
}
.sinif1{
color:#333;
}
.sinif2{
color:#111;
}


Aslında temel kodlamada miras alma diye geçiyor.
 

 

srhtycl srhtycl IBM Ambassador Kullanıcı
  • Üyelik 13.04.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Software Engineer
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 501
  • Beğeniler 86 / 124
  • Ticaret 12, (%100)
ASametYildirim Aslında işin içinde PHP ve MySQL olduğu zamanlarda en fazla dikkat etmeniz gereken kısım döngülere çok fazla girmemeye çalışmaktır. Yani kompleksiteyi olabildiğince düşük tutmanız gerekmektedir.

Evet echo'nun print'den bir farkı olmayabilir ama


echo 'Ali
';
echo 'Mehmet
';
echo 'Veli
';
echo 'Ayşe
';
echo 'Fatma
';


ile


echo 'Ali
Mehmet
Veli
Ayşe
Fatma
';


arasında fark vardır. En azından 2000-3000 dosyalık projeleri düşündüğünüzde (resmin tamamına baktığınızda hele ki kullanıcı sayınızın yüksek olduğunu düşündüğümüz zamanlarda) farkın hissedilir olduğunu anlayacaksınız.

Gereksiz değişken oluşturmak memory'i fazla kullanmanıza neden olacaktır, kaçınmakta fayda var.

Eğer bir şey statik olarak yazılabiliyorsa, o şekilde yazmayı tercih etmelisiniz. Örnek vermek gerekirse ASP.NET'deki HTML helperlar. PHP fonksiyonlarla kendi helperınızı yazabilirsiniz. Bir geliştirici her seferinde buton oluşturmak için;



yazmak yerine PHP ile bir fonksiyon oluşturup


function button($name,$text) {
return '';
}


button eklemek istediği yerde şu kodu çağırıyor

echo button("buttonAdi","Tıkla");

Evet kod yazımını hızlandıran bir hareket ama butonu statik olarak eklemek varken fonksiyon üzerinden okutup bastırmak kaynak kullanımına neden olacaktır.

Başka önemli bir nokta döngüyle veritabanına veri eklemek yerine, bu kısmı sql sorgusuyla halletmeye bakın. Hemen durumu örnek bir senaryo üzerinde açıklayayım. Bir algoritmanız var, her gün üyeler tablosundan 1000 kişiyi başka bir tabloya aktarmanız gerekiyor. Genelde akla ilk gelen senaryo, PHP ile söz konusu 1000 üyeyi çekmek ve döngü ile hedef tabloya INSERT işlemi uygulatmaktır. Sağlıklı bir yöntem değildir. 1000 kişiyi teker teker veritabanına yazmak can sıkabilir, timeoutlara neden olabilir. Bunun yerine SQL sorgusu ile tek bir hamleyle insert yapabilirsiniz.


INSERT INTO yeniTablo (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM eskiTablo WHERE uye_id < 1001;
THEX3T4R ASametYildirim

kişi bu mesajı beğendi.

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
Premature optimization Root of All Evil.

Gereksiz Optimizasyon bütün kötülüklerin anasıdır.

Profiler kullanmadan kodun nerede çaktığını bulamazsın.

Öyle echo ile print ile antin kuntin işlerle optimizasyon olmaz.

Modern web sitelerinin sürat problemi genelde sayfayı oluşturmaktan çok javascript yüklemesinden kaynaklanıyor.

Yani sayfayı jquery, botstrap vs olmadan yükletin test edin bakalım ne kadar hızlı yükleniyor.

Günümüzde yavaşlık daha çok, facebook google ads jquery vs gibi eklentilerden kaynaklanıyor.

Her sayfada sosyal paylaşım düğmeleri vs var. Ancak site sahipleri bunların ne kadar işe yaradığını ölçmüyor, herkeste var bizde de olsun. olsunda load a ne kadar yük getirdiğnide ölç birader.

En son bir word press sitesine baktım yavaşmış. PHP siteyi 1 sn civarında üretiyor. Ancak sayfa yüklemesi 17 sn, bunun 9 sn si bilimum sosyal javascrit kalanıda ön sayfada hayvan gibi 50 tane ayrı resim var onlar.

Yani php ile genel kurallara uyup orta şeker bir web sitesi yaptınız, iyi güzel makinanız var. Efendim basit bir iki kurala uydunuz. Mantıksız sql queryleriniz yok.
Sistem nginx ve php-fpm ile çalışıyor. Eğer makina yetersiz geliyorsa bundan sonra gideceğiniz memcache ile bir kısım veriyi sql den cacheye çekip oradan kullanmak.

Bu aşağı yukarı limittir, bundan sonra siteyi Google GO dili ile yazmak kalıyor ve bu extrem bir örnek. Yani bu kadar yükünüz varsa o na göre de geliriniz olmalıdır.
ulas ASametYildirim

kişi bu mesajı beğendi.

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