2012-01-18 10 views
8

Muhtemelen yaklaşık 3000 satır kod olacak bir sınıf yazma sürecindeyim.Bir sayfada büyük bir sınıf başlatmayı yavaşlatıyor mu?

Bilmek istediğim şey çok basit, her bir sayfanın üst kısmında bu sınıfı başlatan, nesne yöntemlerinden sadece biri/ikisi kullanılacak olsa bile, sayfanın çalışma zamanını yavaşlatır mı? Sunucuya günde binlerce kez ulaşılıyorsa, sunucuya daha fazla yük getirecek mi?

Eğer öyleyse, bütün bir sınıfı tek bir dosyada tutmak yerine her bir yöntemi işlemek için uzantılar oluşturmaya mı çalışmalıyım?

Öncelikle, sadece KingCrunch ve Kenaniah düzeltmek için EDITED, bu sınıf resultantly o web sitesi ve bizim iPhone Uygulaması görüntülenecek verileri almak için bir çok fonksiyonu tutar anlamına gelir benim API içindir tüm Facebook Uygulamamız ile birlikte. Dolayısıyla, 3000 satırlık web sitemizin büyüklüğü ve kabiliyetleri göz önüne alındığında oldukça küçüktür. Bu yüzden, tasarım kusuru olmadığından emin olabilirim, yapısal bir kusur olsa da, bu soruyu sormamın nedeni budur ...

Yapı işlevi, varsayılan değerleri tanımlanan değişkenlerle basitçe ayarlar, başka bir şey değil.

Bu dosyayı tamamen sıfırdan yazdım, dolayısıyla eski bir kod yok ve sınıftaki yöntemlerin olabildiğince verimli olduğundan eminim.

Apache ab aracını kullanarak yüksek hacimli trafiği taklit etmenin yanı sıra sunucu kullanımımı vb. Izliyordum ve bellek kullanımım bitse de, tamam görünüyor.

+3

bir temizlemeyi düşünebilirsiniz bir 3000 LOCs sınıfı bir performans probleminden çok bir tasarım hatası gibi geliyor ... – KingCrunch

+0

Kısacası, evet, yavaşlayacak Bu sınıfı başlatmalıyız. Muhtemelen düşündüğün kadar kötü değil. Bu soruya bakmak isteyebilirsiniz gibi geliyor: http://stackoverflow.com/questions/1424382/one-compressed-file-of-classes-vs-multiple-class-files-in-php – tjarratt

+2

Kısa cevap: * Evet*. Uzun cevap: * bir sayfayı yavaşlatan sonsuz bir dizi faktör var. 3000 satırlık kodda * ne * kaybederseniz * başka bir yere yapılabilir. –

cevap

4

Artık Çalışma eklemek Will sayfanın çalışma zamanını yavaşlatmak her sayfanın üst kısmında bu sınıfı başlatılması olacak? Evet. Tabii ki. Hiçbir şey bedava değil. Ayrıştırılan her satırın bazı küçük ek yükleri vardır (ancak bu maliyetin çoğunu APC gibi bir opcode önbelleğiyle kaldırabilirsiniz). Ancak, muhtemelen, milisaniye altüstünden bahsediyoruz. Bundan emin olmanın tek yolu, onu kendiniz izlemektir.

Günde binlerce kez erişiliyorsa sunucumda çok daha fazla zorlanma olacak mı?

Kişisel deneyimden, no. Ama yine, kendini ölç ve ölç. Sunucunuzdaki temel performans ölçümlerini izlemelisiniz (CPU kullanımı, yük ortalaması, vb.). Değişikliğinizi dağıtın ve metriklerinizi izleyin.

+0

, eğer 3k çizgilerine ihtiyacı varsa ve onu birden fazla sınıfta bölüştürmeyi düşünürse, ona bağlı olacak. teker teker, performanslarını yavaşlatır. –

+0

Yep, on 300 satırlık dosya da dahil olmak üzere, bir 3000 satırlık dosyadan daha yavaştır (bir bit). Yine, duvar zamanında gerçek fark muhtemelen oldukça önemsizdir. –

+1

Ancak, otomatik yükleme ile her istek için her "alt sınıfın" yüklenmesi gerekli olmayabilir ve bu da APC'yi kullanmanın iyi bir gerekçesidir. –

1

Hayır, çok sayıda LOC'den oluşan bir sınıfı başlatmak, otomatik olarak yavaşlatmaz.

Bu, kurucuda bir şey yapmazsanız, ancak o zaman, orada ne yaptığınıza ve sınıfın ne kadar büyük olduğuna bağlı değildir.

1

Hayır, aslında birden çok dosyada bölmekten daha hızlıdır. Tek sorun, büyük bir kod bloğu ile sonuçlanan ve değişikliklerin yapılması daha zor olan tek sorun olmasıdır.

DÜZENLEME: tüm satırların kullanışlı olması durumunda daha hızlı olacaktır.Bir çok eski kodunuz varsa,

İlgili konular