Paměťová a výpočetní náročnost JVM vs .NET

Ferda Mravenec

Paměťová a výpočetní náročnost JVM vs .NET
« kdy: 16. 09. 2016, 08:11:05 »
Dobry den vespolek,

 umel by tady nekdo porovnat narocnost webove aplikace v .NET a v Jave? Jde mi o hosting, je problem sehnat Javovsky hosting v nejake nizsi cene, .NET jde sehnat relativne snaz - tipnu si ze nebude tak narocny na zdroje jako Java. Pravda?
« Poslední změna: 16. 09. 2016, 09:46:55 od Petr Krčmář »


Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #1 kdy: 16. 09. 2016, 08:46:14 »
Nepravda. Už jenom pro to, že pro .NET potřebujete Windows. Java není out-of-box pro sdílený hosting navržená, takže si hoster musí udělat vlastní řešení. Navíc o takové řešení má málokdo zájem, protože pro menší věci použije Google App Engine, Heroku a podobné, pro větší věci použijí VPS nebo vlastní hardware. Takže o sdílený hosting na Javě (předpokládám, že myslíte hostování WAR) by byl malý zájem – takže zároveň není kam rozpustit fixní náklady, tedy to nebude levné, a o to menší zájem by o to byl.

Pro obecný .NET nějaký takový existuje? Jsou sdílené webhostingy pro ASPX, ale to je podobné, jako PHP. A pak to jsou různé VPS nebo cloudová řešení jako Azure.

Ivan Nový

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #2 kdy: 16. 09. 2016, 08:51:11 »
Nepravda. Už jenom pro to, že pro .NET potřebujete Windows. Java není out-of-box pro sdílený hosting navržená, takže si hoster musí udělat vlastní řešení. Navíc o takové řešení má málokdo zájem, protože pro menší věci použije Google App Engine, Heroku a podobné, pro větší věci použijí VPS nebo vlastní hardware. Takže o sdílený hosting na Javě (předpokládám, že myslíte hostování WAR) by byl malý zájem – takže zároveň není kam rozpustit fixní náklady, tedy to nebude levné, a o to menší zájem by o to byl.

Pro obecný .NET nějaký takový existuje? Jsou sdílené webhostingy pro ASPX, ale to je podobné, jako PHP. A pak to jsou různé VPS nebo cloudová řešení jako Azure.
VPS nemusí být drahá ceny od 100Kč měsíčně. 1GB memory, 20GB data, 1 procesor

lojzik

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #3 kdy: 16. 09. 2016, 09:43:50 »
Nepravda. Už jenom pro to, že pro .NET potřebujete Windows.
Neni tak úplně pravda. Záleží co bude chtít v tom .NET dělat, jestli to bude kompatibilní mono nebo to bude udělaný na .net core, tam má ms i kontejnery pro docker

rv

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #4 kdy: 16. 09. 2016, 09:44:25 »
Citace
pro .NET potřebujete Windows
Neni pravda - zkousel jsem http://www.mono-project.com/docs/web/aspnet/ a funguje. Problem je, ze nenajdes hosting, ktery by ti dal asp.net na linuxu = levnejsi nez na Windows server. "Mono" se snazi, ale jsou veci, ktere pod nim nejdou a v tu chvili by ti nemohl poskytovatel takoveho hostingu (linux + .net) pomoct. Leda nabidkou na Windows ;)


alfonzo

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #5 kdy: 16. 09. 2016, 09:44:42 »
java je pomalsia ako .NET. o .NET Core ani nehovorim, na ten sa java nechyta :)

andy

Re:Paměťová a výpočetní náročnost JVM vs .NET
« Odpověď #6 kdy: 16. 09. 2016, 10:04:13 »
Java je rychlejsia ako .net ale zere pamat, nabobtnava jej heap. Da sa to potunit parametrami VM, ale na .net core to v tomto ohlade nema. Skusal som rozne OS webove aplikacie a .net je z nejakeho dovodu proste uspornejsi. Problem je, ze zatial nie su seriozne .net core apky a casto vyzaduju iis.

Radek Miček

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #7 kdy: 16. 09. 2016, 13:32:46 »
Nepravda. Už jenom pro to, že pro .NET potřebujete Windows.

Není pravda, že potřebujete Windows.

Kromě toho aplikace pro .NET Framework mohou být méně náročné na paměť díky hodnotovým typům, které pod JVM neexistují.

Citace
Pro obecný .NET nějaký takový existuje?

Co je to obecný .NET?

perceptron

Re:Paměťová a výpočetní náročnost JVM vs .NET
« Odpověď #8 kdy: 16. 09. 2016, 14:54:48 »
Citace
tipnu si ze nebude tak narocny na zdroje jako Java
lebo neviete robit v jave zdielany hosting. nepustite si vedla seba 10 tomcatov ak bezna appka potrebuje 256 MB, nemate na to manazment.

na to ale vsetci serou

pri dobrom projekte zarobite za 5 minut na vpsku / normalny cloud

a ak ste na vps / normalnou cloude tak ste na linuxe a date si javu zadara a bez problemov

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #9 kdy: 16. 09. 2016, 15:42:19 »
Není pravda, že potřebujete Windows.
Kolik asi bude uživatelů, kteří chtějí spouštět webové aplikace na omezené verzi Mono pod Linuxem? A kolik z nich bude chtít sdílený webhosting?

Kromě toho aplikace pro .NET Framework mohou být méně náročné na paměť díky hodnotovým typům, které pod JVM neexistují.
Za prvé tohle na paměťové náročnosti aplikace vůbec nepoznáte, za druhé Java hodnotové typy má.

Co je to obecný .NET?
Obecný .NET je aplikace napsaná v kterémkoli jazyce pro .NET, třeba v C#. Předpokládám, že takovou aplikaci si na běžném sdíleném ASPX hostingu nespustím.

Radek Miček

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #10 kdy: 16. 09. 2016, 16:14:17 »
Není pravda, že potřebujete Windows.
Kolik asi bude uživatelů, kteří chtějí spouštět webové aplikace na omezené verzi Mono pod Linuxem?

Řekl bych, že celkem dost programátorů používá Mono na Mac OS X pro vývoj. A kromě Mona tu je .NET Core.

BTW pro webové aplikace nebývají omezení Mona problém.

Citace
Kromě toho aplikace pro .NET Framework mohou být méně náročné na paměť díky hodnotovým typům, které pod JVM neexistují.
Za prvé tohle na paměťové náročnosti aplikace vůbec nepoznáte, za druhé Java hodnotové typy má.

Ano, máte pravdu - měl jsem napsat, že nemá uživatelsky definované hodnotové typy a specializaci (tu musíte v Javě udělat ručně - tj. zduplikovat kód pro každý primitivní typ).

Oboje se pak značně projeví ve chvíli, kdy máte mnoho instancí - například v kolekcích. Některá JVM dělají escape analysis + alokaci na zásobníku, ale to nemusí fungovat tak spolehlivě, jako uživatelsky definované hodnotové typy + specializace (proto to chtějí přidat v Javě 10, ne?).

Citace
Co je to obecný .NET?
Obecný .NET je aplikace napsaná v kterémkoli jazyce pro .NET, třeba v C#. Předpokládám, že takovou aplikaci si na běžném sdíleném ASPX hostingu nespustím.

Webové aplikace se normálně píší v C#. Například, když použijete ASP.NET MVC, tak vaše aplikace nemusí mít ani jeden ASPX soubor.

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #11 kdy: 16. 09. 2016, 16:48:45 »
Oboje se pak značně projeví ve chvíli, kdy máte mnoho instancí - například v kolekcích.
Nemyslím si, že by webová aplikace, která má v kolekcích uloženy stovky MB dat, byla typická.

Webové aplikace se normálně píší v C#. Například, když použijete ASP.NET MVC, tak vaše aplikace nemusí mít ani jeden ASPX soubor.
Právě proto jsem se ptal na ty webhostingy, které umí hostovat webové aplikace napsané v C#. Protože to je to, co tu porovnáváme.

Radek Miček

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #12 kdy: 16. 09. 2016, 17:37:57 »
Oboje se pak značně projeví ve chvíli, kdy máte mnoho instancí - například v kolekcích.
Nemyslím si, že by webová aplikace, která má v kolekcích uloženy stovky MB dat, byla typická.

Na masivní degradaci výkonu stačí i kolekce obsahující pouhé tisíce prvků. Přístup Javy totiž mrhá cachí a komplikuje práci prefetcheru.

Citace
Webové aplikace se normálně píší v C#. Například, když použijete ASP.NET MVC, tak vaše aplikace nemusí mít ani jeden ASPX soubor.
Právě proto jsem se ptal na ty webhostingy, které umí hostovat webové aplikace napsané v C#. Protože to je to, co tu porovnáváme.

Myslím, že ASP.NET MVC podporuje drtivá většina webhostingů - tj. myslím si, že téměř všechny webhostingy to zvládnou.

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #13 kdy: 16. 09. 2016, 18:39:40 »
Na masivní degradaci výkonu stačí i kolekce obsahující pouhé tisíce prvků. Přístup Javy totiž mrhá cachí a komplikuje práci prefetcheru.
Napsat špatný program lze v jakémkoli jazyce. Pokaždé přijdete s něčím novým, nicméně ještě jste nepřišel s ničím, co by dokazovalo vaše původní tvrzení, že absence uživatelských hodnotových typů v Javě způsobuje výrazně větší paměťové nároky Java aplikací.

Citace
Myslím, že ASP.NET MVC podporuje drtivá většina webhostingů - tj. myslím si, že téměř všechny webhostingy to zvládnou.
Takže můžu vzít libovolnou aplikaci napsanou v C# využívající ASP.NET MVC a libovolné další .NET knihovny (třeba iTextSharp , Saxon EE .NET) a nasadit ji na kterýkoli hosting, který podporuje ASPX, třeba Active24, ASPone, web4u?

gl

Re:Pametova a vypocetni narocnost JVM vs .NET
« Odpověď #14 kdy: 16. 09. 2016, 19:41:44 »
Na masivní degradaci výkonu stačí i kolekce obsahující pouhé tisíce prvků. Přístup Javy totiž mrhá cachí a komplikuje práci prefetcheru.
Napsat špatný program lze v jakémkoli jazyce. Pokaždé přijdete s něčím novým, nicméně ještě jste nepřišel s ničím, co by dokazovalo vaše původní tvrzení, že absence uživatelských hodnotových typů v Javě způsobuje výrazně větší paměťové nároky Java aplikací.

Asi nejde o paměťové nároky, ale o lokálnost. Jak se dá například v Javě vytvořit pole objektů, tak aby bylo zaručeno, že jsou v paměti za sebou?