Hei,
Minulla on palvelinohjelma joka on, tällä hetkellä 6 Corea ja 2Ghrz käytössä, voin lisätä core määrää myöhemmin, ja tällä on tarkoitus palvella 7500 kävijää.
Osaako joku arvioida, kuinka paljon nopeampi on C++ palvelinohjelma joka on identtinen Java palvelinohjelman kanssa.
Onko Javalla edes mahdollista tehdä palvelinohjelmaa tuhansille, koska Java kirjastojen ja luokkien uusi alustus, voi joskus viedä resursseja kohtalaista enemmän ?
En ole ammattitaitoinen ohjelmoija, mitä etuja ja haittoja on erikseen, Java ja C++ palvelinohjelmassa ?
Minun palvelinohjelman toiminta on käytännössä, eri String vertaamista, palvelinohjelma vastaanottaa stringin ja rakentaa palaute stringin. :).
:) :) :)
--
HannuTapio kirjoitti:
Hei,
Minulla on palvelinohjelma joka on, tällä hetkellä 6 Corea ja 2Ghrz käytössä, on tarkoitus palvella 7500 kävijää.
Ok. Kuinka monta prosenttia käyttäjien määrän tulee kasvaa, jotta pääset tavoitteeseesi 7500:ään (yhtäaikaiseen?) kävijään ?
HannuTapio kirjoitti:
Osaako joku arvioida, kuinka paljon nopeampi on C++ palvelinohjelma joka on identtinen Java palvelinohjelman kanssa.
Oma arvioni on muutamia kertoja, mutta p*sk*ti ohjelmoitu ohjelma on hidas riippumatta käytetystä kielestä. Valmiita kirjastoja järkevästi käyttämällä ero ei ole "häiritsevä", mutta jos käytät Javaa ohjlemoimalla kaiken itse, niin nopeusero on havaittava.
HannuTapio kirjoitti:
Onko Javalla edes mahdollista tehdä palvelinohjelmaa tuhansille, koska Java kirjastojen ja luokkien uusi alustus, voi joskus viedä resursseja kohtalaista enemmän ?
On. Siis aivan varmasti voi. Nykyään on turha tehdä C/C++:lla ohjelmia, ellei kyseessä sulautettu systeemi tai vanhojen softien ylläpitämisessä, jossa rauta on rajoitteellinen.
HannuTapio kirjoitti:
En ole ammattitaitoinen ohjelmoija, mitä etuja ja haittoja on erikseen, Java ja C++ palvelinohjelmassa ?
Java-tavukoodi on usein pienempi kuin käännetty C/C++ ohjelma. Suoritus C/C++:lla on yleensä nopeampi, mutta asiahan riippuu enemmän käytetystä algoritimista ja siitä kuinka paljon ajetaan palvelimen puolella ja kuinka paljon asiakas-puolella.
Itse ohjelmoisin "Lautapelisivusi" Java:lla, koska osaat sitä paremmin kuin C/C++:aa. Ohjelman ajonopeudessa eroa tuskin huomaat, vaikka sivustosi käyttäjämäärä kasvaisi muutamiin tuhansiin, jos ohjelmoit sivustosi järkevästi.
Esimerkiksi, jos lataat uuden kokonaisen kuvan uudesta shakkisiirrosta 10k:n resoluutiolla, niin silloin saat kyllä kyykkäämään 1000:llakin yhtäaikaisella käyttäjällä, vaikka prosessoriteho riittäisikin, niin tuskin kaista.
... mutta jos käyttäjä lataa kerran nappuloiden grafiikat ja äänet, ja käyttäjän puolella renderöidään grafiikat, ja siirrossa lähetät vain siirron Esim. E2-E4-muodossa clientille, niin silloin palvelimesi tuskin kyykkää 10000:kaan yhtäaikaisessa pelissä.
HannuTapio kirjoitti:
Osaako joku arvioida, kuinka paljon nopeampi on C++ palvelinohjelma joka on identtinen Java palvelinohjelman kanssa.
Sinun taidoillasi java-sovellus on todennäköisesti nopeampi eikä kaadu kymmenen kertaa sekunnissa, joten älä mieti tällaisia juttuja ollenkaan.
HannuTapio kirjoitti:
Onko Javalla edes mahdollista tehdä palvelinohjelmaa tuhansille, koska Java kirjastojen ja luokkien uusi alustus, voi joskus viedä resursseja kohtalaista enemmän ?
No sehän nähdään sitten kun joskus saat edes 1000 käyttäjää sivustollesi, saati suunnittelemasi 7500.
HannuTapio kirjoitti:
En ole ammattitaitoinen ohjelmoija, mitä etuja ja haittoja on erikseen, Java ja C++ palvelinohjelmassa ?
C++:n ehdoton haittapuoli on se, että se soveltuu todella huonosti tunareiden käyttöön.
HannuTapio kirjoitti:
Minun palvelinohjelman toiminta on käytännössä, eri String vertaamista, palvelinohjelma vastaanottaa stringin ja rakentaa palaute stringin. :).
Kun HTTP-pyynnöt ovat merkkijonoja ja vastaukset HTTP-pyyntöihin myös merkkijonoja, niin mitä muutakaan palvelinohjelma voisi tehdä? Valoja päälle nyt kerrankin.
peran kirjoitti:
Java-tavukoodi on usein pienempi kuin käännetty C/C++ ohjelma.
Rohkenen sanoa että tämä on hevonpaskaa. Vertailet varmaankin staattista C++-käännöstä, jossa on kaikki lisäkirjastotkin käännettynä osaksi binääriä, java-sovellukseen, jossa suurin osa tauhkasta on upotettuna virtuaalikoneeseen? Hävytöntä valehtelua.
peran kirjoitti:
Suoritus C/C++:lla on yleensä nopeampi, mutta asiahan riippuu enemmän käytetystä algoritimista ja siitä kuinka paljon ajetaan palvelimen puolella ja kuinka paljon asiakas-puolella.
Ei oikeastaan riipu mistään näistä vaan ihan omista ohjelmointitaidoista. Javalla on helpompi ohjelmoida "palvelinsovelluksia" kuin C++:lla, joten luonnollisesti java-palvelinsovellus toimii todennäköisesti nopeammin kuin joku onneton C++-kikkare. Mutta tässä pitäisi tietää enemmän siitä, että mistä lähtötilanteesta puhutaan. Onko kaikki koodattu itse sokettien käsittelystä alkaen vai onko taustalla jokin freimis, jne.
Luultavasti kielellä ei ole tässä tapauksessa merkitystä. Enemmän merkitystä on sillä, onko palvelimessa jokin kohta liian hitaaksi tehty.
Hannun kannattaisi tehdä ohjelma, jolla voi testata palvelinta. Voisi koodata vaikka suoraan palvelimeen ominaisuuden, että kun pelaajan nimi on SALAINEN-TESTI-[numerosarja] ja pelaaja lähettää komennoksi aina vain TESTI, palvelin vaihtaa viestin tilalle jonkin pelitilanteeseen sopivan viestin ja jatkaa käsittelyä normaalisti. Sitten pitää vain tehdä ohjelma, joka yhdistää oikean määrän SALAINEN-TESTI-pelaajia ja lähettää niiltä TESTI-viestejä jollain sopivalla ajastuksella. Palvelimen tiedoista näkee, miten paljon palvelin kuormittuu.
HannuTapio kirjoitti:
Osaako joku arvioida, kuinka paljon nopeampi on C++ palvelinohjelma joka on identtinen Java palvelinohjelman kanssa.
--
Kyllä osataan. Jos on identtiset niin silloin ei ole mitään eroa koska sitä identtinen juurikin tarkoittaa.
:) :) :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.