Vs Java PHP orada enerji tüketimi farklar nelerdir?

12 Cevap java

Java PHP daha az enerji tüketir ve bu gerçek nasıl olacağını ve eğer merak olduğunu, bir söylenti duydum. Şu anda biz PHP bizim apps en temel bir şirkette çalışıyorum. Güç tüketimi bizim için sorun olmamıştı, ama önemli olabilecek büyük projeler üzerinde çalışıyoruz. Biz web geliştirilmesi için PHP seviyorum ve hiç doğruysa böyle bir söylenti yayılmış ve nasıl merak ediyor.

Ben duydum örnek Facebook Java bu nedenle tam olarak (Ben gerçi google bu malzeme herhangi bulmak için görünmüyor olabilir) için anahtarlama olmasıydı.

Benim bir müşteri bana bu soruyu soruyor çünkü doğruysa ben kanıt isterim.

12 Cevap

Onlar Java veya PHP yürütme eğer bilgisayarlar özellikle umurumda değil. Güç tüketimi hemen hemen aynıdır. O zaman soru performansının bir soru olur - bir sunucu ile daha fazla istekleri hizmet edebilir eğer daha az sunucuları ihtiyacı ve daha az güç tüketir edeceğiz. Web ölçekli uygulamalar yapıyor değilseniz ya da alternatif olarak, hızlı isteklerini sunmak ve daha az güç tüketir, rölanti daha fazla zaman harcamak.

Saf Java ve saf PHP göz önüne alındığında, bir statik yazdığınız JIT'ed dili olarak Java hızlı tabii ki. Soru ekip üyeleri ve sizin için mevcut geliştirme çabası verilebilir hızlı yapabilirsiniz hangisinin daha ziyade.

Benim almak en iyi yolu, dilleri karıştırabilir karmaşık ama o ağır iş ve sunum mantığı oluşturmak için kritik performans parçaları ve daha çevik bir şey inşa etmek gibi Terracotta gibi mevcut Java tabanlı altyapı araçlarını kullanmak olmasıdır.

Ben gerçekten bir dil tek konudur şüpheliyim.

Söz konusu platformlar herhangi bir jenerik karşılaştırma Moot işlemek için çok fazla değişkenlik var. Birkaç değişkenlik puan isim.

  • Java (Tomcat, Glassfish, Websphere, İskele, ...) için Servlet konteyner
  • PHP (Apache, IIS, lighttpd, nginx, ...) için Web sunucusu
  • PHP kodu önbelleklerini
  • Kütüphaneler ve kullanılan framewokrs
  • İşletim sistemleri
  • Ilgili sabit diskler
  • Soğutma
  • Uygulamanın kendisi Algoritmalar

Gerçekten yararlı bir ölçüt haline pek çok değişkene izole şüpheliyim. De çoğu aynı donanımı kullanarak (platformun seçimler tüm belirterek) iki eşdeğer uygulamaları almak ve bunları karşılaştırabilirsiniz. Bu bir iyi üstleri kadar Sonra kötü geliştirmek. Doğru ölçüm saat ve saniyede isteklerinin başına hem watt olurdu, ben düşünüyorum.

Not Neler Ants' answer (onu upvote) önemli nokta olsa: the better performing platform will always be more power efficient, given enough demand, daha az donanım ile istekleri aynı miktarda hizmet etmek mümkün olacak çünkü.

Ama hangi bir platform değil, sadece dil bağımlı daha iyi performans olduğunu yukarıda belirtildiği şeyleri (ve biraz daha fazla) bağlıdır.

I this kadar açık bir Google arama yaptım kadar ben bu soruya şaşırdı. Bu ciddi bir sorun, ben düşündüm olmazdı biri.

Şimdi bunu düşünüyorum, ben bu elektrik faturası ödeyen bir sorun haline gelir düşünüyorum. Ön uç için arka, ince istemciler için büyük demir: Sun'ın Java stratejisi sunucularını satış hakkında oldu.

Belki Flex gibi teknolojiler geri istemci iş daha fazla hareket ve elektrik faturası büyük bir yüzde ile bunları bırakın.

Ama enerji kullanımı ile dillerin bir sıralamasını görmek için şaşıracaksınız.

Çok ilginç bir soru. Ben o kadar oy veriyorum.

Ne büyüleyici bir sorun. Bu dillerin bir dizi bir uygulama yazmak özdeş donanım bunları dağıtmak ve güç tüketimini ölçmek için ilginç olmaz mıydı? Onu görmek isterim.

Eğer gerçekten deli alırsanız, ne bir performans izleme aracı hakkında olduğunu, bellek ve CPU app her kesiminde tüketilen nereye gösteren ek olarak, aynı zamanda size en enerji nerede kullanıldığını gösterir misin?

Şimdi ben bu soruyu tekrar yukarı oy isterdim.

Burada birçok karşılaştırmalı soru gibi, muhtemelen gerçekten doğru olup olmadığını belirlemek için bir kriter ile gelmek gerekir.

lesswatts.org has a bit of information on applications power management, hem de Linux sistemlerinde enerji tüketiminin çeşitli diğer yönleri. Bu da kendi başına değer bir şey olabilir bu yüzden bir yan not olarak, onlar, PHP kullanarak gibi görünüyor :)

Onlar PowerTOP uygulamaları en güç tüketimine neden olduğunu belirlemek için kullanmanız gerekir, ve en azından, onlar boşta gelen açılışları kontrol ediyoruz ekran görüntüsünden görebilirsiniz tekrar tutun.


Çoğu zaman, bir web sunucusu o zaman çok kısa bir an için, o hizmet için bir sonraki bağlantıda bekliyor geri gider "hizmet", boşta oturuyor. Bu bağlamda, PHP tüm süreci çok az katkıda: sadece hizmet kısmını. Asıl karşılaştırma benzer sayfaları hizmet veren Apache / PHP vs belirli bir Java tabanlı web sunucusu bir karşılaştırma olsaydı Yani ben merak ediyorum. Bu durumda ise, gerçekten PHP ve Java adil bir karşılaştırma değil - gerçek bir sayfa hizmet olarak kabul ikisinden birinin tipik bir seferde milisaniye için etkindir. Ben gerçek bir web sunucusu, seçerek veya yoklama bağlantıları var bir, güç hogging olacak biri olduğunu düşünürdüm.

Enerji tüketimine sen Watt güç tüketimi demek?

Ben% 100 emin değilim, ama bu doğru olsa bile, ben bu programın çalışma zamanının% 0.01 olarak yürütülür senin kod, bir kısmını optimize benzer olduğunu düşünüyorum.

Anahtarlama (eğri zaman kaybını, yeni iş yazılım maliyetlerini, vb öğrenme, üretim / release platformlar değiştirerek) neden olacak sorunları oldukça şiddetli olacak. Böyle önemli bir karar ciddi ve şirket-özel iş analizi görev ve ona karşılık gelen sonuçlar sonrasında hariç, yapılıyor göremiyorum.

Ancak, bu ilginç bir tartışma için yapmak gerekir.

Ben birçok büyük şirket kendi veri merkezlerinde çeşitli kaynaklar talepleri büyüme ile zorluk olduğunu anlıyoruz. Bu zemin alanı ve güç tüketimini hem de içerir. Bu yüzden de düşük kaynak tüketimi kabul ediliyor bir stratejidir lehine, applciations bu rasyonelleşmesini inanamıyorum.

Java, PHP veya başka bir uygulama teknolojisinin kullanımı güç tüketimi belirleyici olması muhtemeldir olsun benim için daha az açıktır.

Biz en yürütme kaynakları ihtiyaç beklediğiniz Basic, Java ve C yorumlanıyor diyelim, kaynak tüketimi için optimize fonksiyonu belirli bir parçası, eğer uygulanırsa.

Biraz zor bir kanıt görmek gerekir, ama ben saf bir yorumlama dili Java, daha fazla tüketebilir inanıyorum ki, ve hatta JIT vb sırayla C'den daha tüketebilir

Şimdi sadece Java daha C geliştirmek için daha fazla çaba olduğunu ve Basic daha Java geliştirmek için daha fazla çaba ki (tamamen varsayımsal olarak, ben bu durumda demiyorum) varsayalım. Bunu nasıl kaynak tüketimi karşı geliştirme ve bakım çaba kapalı ticaret misiniz?

Yapmak gerçekten zor. Birisi güç tüketimi bazında soleley Java ilerliyorlardı bana söyleseydi ben gerçekten daha fazla bilmek isterdim. Bunu yaparken maliyetleri nelerdir? Nerede başabaş noktası oldu? [MEZUNLARI - "! Biz ne kadar düşük güç görmek, biz kazanacağız" Ben Java neredeyse sadece çalışmak, ben söylemek mümkün olmak isterdim]

Bu gibi kriterler bahsedildi, sürece cevabı zor bir soru, karşılaştırma için bazı kurallar koymak.

Java kaybedecek Örneğin, bir PHP web sayfasına bir Java3D first-person shooter karşılaştırarak, haksızlık olur.

If you look at Java frameworks, then you may want to compare these three: Tomcat + JDK 6 + JSP Apache + PHP Scala + Lift framework

Bu java baytkoduna derler ben Scala dahil ve ben güç için ucuz olacaktır bekliyoruz.

Ben Scala bahis olur, kazanan ne olacağını belli değil, ama size uygulanan aynı uygulama var ve sonra sadece güç kullanımını karşılaştırmak emin olmak isterim.

PHP muhtemelen apache kazanacak ve PHP Java fazla bellek kullanımı düşük gibi görünüyor, ama gerçekten Scala ve PHP karşılaştırmak olamaz.

Benim için büyük bir bilinmeyen daha sonra aynı java kodu ararsanız zaten yerli koduna dönüşmüş ve böylece daha hızlı çalışacak, ancak JSP Java yararlanmak için önceden derlenmiş olmalıdır.

Ama sen, tarayıcı üzerinde yükün en koymak gibi büyük bir javascript uygulaması varsa, o zaman sadece sunucu üzerinde güç kullanımını azaltacak, sunucu çağrıları yapıyoruz, değişikliği, sonra Web2.0 teknolojileri kullanırsanız, işlemek çalışma tarayıcısı üzerine geçirilir. Bu noktada Java için JIT oyuna gelmeli, ve Java ya Scala ben güç kullanımını daha düşük olması beklenir.

Bir büyük sınav, IMO, size 3 yük dengeli PHP veya Java için bilgisayar, ve 1 Scala makine gerekiyorsa olabilir, biz makinenin boyutunu azaltmak gibi biz aynı performansı alabilirsiniz görmek için olabilir, bu nedenle olur aynı performans, daha sonra scala (Lift kullanarak) kazanacak.

Güç verimliliği kendi içinde bütün bir alandır. Performansının ölçülmesi genellikle gitmek için en iyi yolu (aynı donanım verilir) 'dir. Farklı donanım karşılaştırılır ediliyorsa, o bir bütün 'nother top oyunu.

Bir yazılım yığını başka bir yazılım yığını daha iyi yapabilir Yani, aynı donanım verilmiş, o daha iyi performanslı yazılım yığını diğerinden daha "istek başına" daha az güç kullanmak anlamına gelir. Performans farkı daha az içine sunucularını birleştirmek için yeterince büyük değilse, o zaman bir daha da büyük kazan!

Diğer hususlar bir sürü var:

Data Centers Consider that servers are housed in data centers that are cooled. Servers generate heat and the heat needs to be removed to protect the hardware. A/C units do not have infinite granularity. Their efficiency usually comes with volume. So if I reduce my number of servers from 2 to 1, I may have saved the power consumption of one server, but probably not much in cooling costs. But if changing my architecture allows me to cut out 100 servers... that's big savings!

Hardware and Peripheral Devices Using the most power efficient SW stack and running it on a Pentium 4 server = stupidity ;) The most energy efficient software cannot make up for inefficient hardware. One interesting lesson here is: "let the hardware guys worry about power". You worry about getting your application to market. When your application can generate revenue, you can always buy the latest 16-core Core 5 hexa-deca CPU and instantly get your energy efficiency ;)

Virtualizaton If your application is low volume, consolidating it into a virtual machine running on multi-core system would probably save you more energy than rewriting it in your most energy efficient SW stack and running it on standalone server.

Programmer Time You need programmers knowledgeable in the "most power efficient" software stack. You must consider if that is the right tools. Programmers use computers to develop the software and the more time they need to develop (if they're constrained to the wrong tools), the more power is consumed. Not to mention you will have to pay them for more hours. This usually overrides any energy consumption concerns because the costs here are magnitudes higher.

Senin tek endişe enerji verimliliği ise, evet, orada almak için torbaya tüm araçlarını kullanın. Ama çoğu zaman, sadece bir küçük şeyler genel düzeni değişken ve aynı zamanda maliyeti en az olan.

Daha verimli kod gücü dahil olmak üzere daha az kaynak tüketir yapar. Genel Java yüzden tüm diğer faktörler Java muhtemelen bir sunucu üzerinde çalışan daha az enerji tüketir, sürekli olmak, daha hızlı, daha verimli bir uygulama vardır.

Ama bütün diğer faktörler are not constant. PHP veya Java kullanmak için karara dayanarak ne gibi değişiklikler söylüyorum var. Örneğin, Java programcıları için artık kendi bilgisayarları var demektir, geliştirmek için daha uzun sürer ve bu onların güç kullanımı sunucu üzerinde tasarruf aşar.

Google, Amazon, ya da binlerce sunucu istekleri tam anlamıyla milyarlarca her gün hizmet vermektedir bazı diğer şirket ise, ben bu konuda endişe ederim. Aksi takdirde, ölçekli enerji tüketimi ile ilgili herhangi bir olumlu iddialar yapmak için yeterince büyük değil, bu yüzden tüm ilgili faktörleri dahil etmek imkansız çünkü üretken olmaktır gibi yaptığınız herhangi bir karar ters olması gibi muhtemeldir.

A alakalı örnek bir söylenti siyah masaüstü arka planı ayarlayarak enerji tasarrufu olabilir etrafında gitti geri birkaç aydır. Düşünme siyah == hiçbir ışık, yani sizin kadar ışık kullanarak değil idi. Google (yeterli güç kullanımı ile birkaç şirketten biri üretken araştırma bu tür yapmak için) bazı deneyler yaptık ve biraz araştırma yaptım ve bu LCD ekranlar ne olursa olsun beyaz ışık üretmek, ve piksel aracılığıyla ikinci bir akımı geçirerek süzün keşfetti farklı bir şekilde. Yani siyah bir piksel ayarlayarak, aslında the most enerji kullanarak mümkün, maksimum onun filtrasyon belirliyor. (En azından bir LCD ekranda) en enerji tasarruflu masaüstü arka planı, bir white arka plan. Beyaz arka plan insanların gözleri zarar beri Ancak, birkaç kişi beyaz masaüstü arka ayarlamak ve siyah arka enerji tasarrufu söylenti hala yaygındır.

Yani, bu yarardan çok zarar vermesi muhtemel olan endişesi, uzun bir hikaye kısa yapmak.

Bu hangi dilde en iyi performansa sahip olduğu gibi aynı soru. Şimdi, hemen her proje için en programcılar hiç temas olsun. (Sistem Tamam speced olduğu göz önüne alındığında) kullanılan teknolojiler daha ağır basar farkla sistemi yazmak nasıl.

Dil wrt performans seçimi gömülü sistemler ve bilim adamları için imho edilir. Bunu son derece nadiren bu kadar cpu etkili için, çözmek için ne problem göre dili seçin.

Yine, tasarım ve o olacak ne kadar etkili belirleyen sistemi yazmak nasıl.

Açıkçası modern bilgisayar teknikleri eskisinden çok daha fazla kaynak kullanımı ve bu doğrudan elektrik tüketimine eşittir. Biz ağ üzerinden ikili veri aktarmak için bir düz eski soket kullanmak istiyorum ve 100Mhz işlemci idare ederim sonra, şimdi biz verileri XML metne dönüştürülür bir yazılım yığını, o aynı üzerinden http üzerinden bir web hizmeti geçti soket ve biz iyi performansı almak için RAM spods ile 3Ghz işlemci neden ihtiyaç acaba :)

Yani mesele, bu konuda yapabileceği tek şey kod daha verimli hale getirmektir. Genellikle bu bir alt düzey dil ve genel amaçlı çerçeveler veya kütüphanelerin az güven kullanılacağı anlamına gelir. Kesinlikle bunu yardımcı olamaz eğer yazılım yığınları katman kalkmayın.

Modern programlama bu sevmiyor - orada programcısı verimlilik doğru bir itme ucuz programcılar istihdam, ve yeniden mühendislik kodu her zaman (yani onu yeniden) böylece kod oluşturmak (ve bazen sürdürmek) için kolay olmalıdır. Sonuç olarak, bu faktörleri kapalı ticaret gerekir iyi almak için. Bunu yapmanın endüstri standardı yolu kendi kullanımına göre sistemlerini karıştırmak için basitçe.

Şu anda nihai performansı C / C + + kodu, ve nihai programcı verimliliği dilleri scripting gibi görünüyor. Yani, hem ideal bir iyi Python gibi bir komut dosyası dili ana iş mantığını yazmak, ve C / C + + ile yazılmış özel bir 'güç yardımcıları' aramak için kullanmaktır. Eğer daha fazla performans gerekiyorsa, altta yatan C / C + + daki kod daha yazabilirsiniz. Daha RAD hızlı bir gelişme gerekiyorsa, komut dosyası dilinde daha yazmak.

OP için benim tavsiyem Java yeniden yazmak için değil, genel performans daha iyi olabilir, ama buna değer olmayabilir çok mal olacak. Bunun yerine, app yoğun bit almak ve verimli olarak olabildiğince bu yeniden ve mevcut PHP onları arayın. sonra genel mimarisi bakmak ve verimsiz protokolleri ve veri yapıları bağımlılığını azaltmak. Örneğin: JSON ile XML değiştirin eğer, size aynı özelliğe sahip bulmak ama verilerini ayrıştırmak ve yeniden biçimlendirmek için gerekli veri boyutu ve kaynakların bir kısmını edeceğiz.

Bu sorulara ilişkin yönleriyle çoğu zaten burada derinlemesine incelemiş olsa da, içine bakmak için en az bir tane daha var.

Tipik bir PHP web uygulaması bir istek çaba çoğaltan sonraki, PHP yürütme ortamı (veya bağlam) istekleri karşısında kalıcı değildir çünkü.

Tipik bir Java web uygulaması does ekstra adımlar veya önbellek hükümsüzlük olmadan, doğrudan devleti devam yeteneğine sahip bu yana, örneğin, aynı bilgileri almak için PHP-style mükerrer SQL sorguları gerçekleştirmek gerekmez her istek için. Bunun yerine, bir Java web uygulaması genellikle oldukça milisaniye nanosaniye erişildiğinde yığın üzerinde bir yerel veri yapısı, mevcut analiz için karmaşık bilgileri depolar.

İşlemci bu temel veri erişim işlevlerini gerçekleştirmek için daha az iş yapmak zorunda olduğundan, çalışma müşteri değeri birim başına daha az güç gerektirir.