Gå til innhold

Anbefalte innlegg

Jeg har holdt på med Python en stund nå, men har nå og da hatt problemer med ytelsen, og lurer på om det er noen gode "bulldoserspråk" en kan bruke for ytelse der Python ikke strekker til.

 

Har vurdert Fortran, men dette har visstok begrensede bruksområder, og det finnes vel noen andre språk med omtrent like god ytelse (som Fortran) med mer generelle bruksområder, ja?

Endret av Yumekui
Lenke til kommentar
Videoannonse
Annonse

Tror fortan blir noe sært.

 

Jeg tror det er bedre å gå for C eller C++ som det finnes en del gode tallknuser-bibloteker til. Da kan du skrive de tidkrevende rutinene i C/C++ og kalle de fra Python.

 

Det er også mulig at du skal kikke nærmere på algoritmene dine, og se om det er de som er inneffektive.

Lenke til kommentar

Nå vet jeg ikke hva du holder på med, men du sier du har problemer med hastigheten? Det er sjeldent jeg merker noe problemer med hastigheten i Python foruten når jeg holder på med tunge matematiske oppgaver eller lager spill. I de fleste tilfellene er det rett og slett algoritmene mine som er for dårlige - og da blir det tregt uansett hvilket språk man bruker. Og problemet blir løst ved å skrive bedre algoritmer.

 

Jeg vil derfor heller abefale deg til å sette deg ned å prøve å lære hvordan skrive bedre og mer effektive algoritmer - det er her man blir god til å programmere, og dette er en prosess som vil ta mange år å mestre.

  • Liker 2
Lenke til kommentar

Nå vet jeg ikke hva du holder på med, men du sier du har problemer med hastigheten? Det er sjeldent jeg merker noe problemer med hastigheten i Python foruten når jeg holder på med tunge matematiske oppgaver eller lager spill. I de fleste tilfellene er det rett og slett algoritmene mine som er for dårlige - og da blir det tregt uansett hvilket språk man bruker. Og problemet blir løst ved å skrive bedre algoritmer.

 

Jeg vil derfor heller abefale deg til å sette deg ned å prøve å lære hvordan skrive bedre og mer effektive algoritmer - det er her man blir god til å programmere, og dette er en prosess som vil ta mange år å mestre.

 

Det kan sikkert være algoritmer til tider, men Python bruker så vidt jeg har forstått det litt (veldig lite, men for gjentatte operasjoner blir det en del tid) mer tid på ting.

 

Hadde det vært opp til meg hadde jeg valgt Java eller C++. Helt klart!

Hvorfor Java? Jeg er ikke særlig begeistret for Java hittil, og dersom en skal gå den veien kan en jo likesågreit velge C++, nei?

 

Jeg ville vurdert programmeringsspråket D om jeg hadde hatt bruksområde hvor C++ hadde vært aktuelt.

 

Wikipedia

D ser ganske fint ut også.

Lenke til kommentar

Får gjøre et slag for C# da:

Det er både statisk og dynamisk typet, funksjonelt, imperativt og 100% objektorientert. Støtter lambauttrykk og fulle closures, et av få språk med spørrespråk innebygget (LINQ). Det har et gigantisk standardbibliotek, og funker på de fleste plattformer (.NET funker på Windows, Xbox360 og Windows Phone, Mono funker på Windows, Xbox360, Linux og Mac OS X).

 

I tillegg er det relativt enkelt å lære seg hvis du kan et annet programmeringsspråk fra før.

 

Du kan få tak i Visual C# Express gratis her.

  • Liker 2
Lenke til kommentar

Jeg har holdt på med Python en stund nå, men har nå og da hatt problemer med ytelsen, og lurer på om det er noen gode "bulldoserspråk" en kan bruke for ytelse der Python ikke strekker til.

 

Jeg sliter litt med å se hva det er med Python som gjør at det ikke kan brukes som "bulldoserspråk". Hva slags oppgaver er det du ikke klarer å kverne fort nok unna? Hva med tenke på å begynne å skrive programmer som utnytter det faktum at dagens prosessorer som oftest har mer enn en kjerne?

 

---

Hieronymus

Lenke til kommentar

Du kan få tak i Visual C# Express gratis her.

Så C# har full Linux-støtte? Jeg får kanskje vurdere C# også, da.

 

Jeg har holdt på med Python en stund nå, men har nå og da hatt problemer med ytelsen, og lurer på om det er noen gode "bulldoserspråk" en kan bruke for ytelse der Python ikke strekker til.

 

Jeg sliter litt med å se hva det er med Python som gjør at det ikke kan brukes som "bulldoserspråk". Hva slags oppgaver er det du ikke klarer å kverne fort nok unna? Hva med tenke på å begynne å skrive programmer som utnytter det faktum at dagens prosessorer som oftest har mer enn en kjerne?

 

---

Hieronymus

Jeg sammenlignet et program i Python med et program i ett eller annet språk (som jeg stilte inn på å bruke kun en kjerne nettopp fordi jeg ville sammenligne hvordan det ytet i forhold til et tilsvarende program Python, som også bare var skrever for én kjerne på det tidspunktet) - Python var en god del tregere, og programmet var såpass lite (et par linjer) at jeg ikke ser hvordan det kunne blitt optimisert mer.

 

Egentlig ser det ut som en ganske grei løsning (Tror det ble nevnt tidligere også).

Lenke til kommentar

Så C# har full Linux-støtte? Jeg får kanskje vurdere C# også, da.

Ikke full. Språket støttes ganske bra, men det er en god del bilioteker som ikke er portet til miljøer utenfor Windowsverdenen.

I all hovedsak Active Directory, Windows Presentation Foundation og XNA. Utover det skal det aller, aller meste være på plass.

 

C# som språk er 100% støttet på Mono.

Endret av GeirGrusom
Lenke til kommentar

Og ytelsen i Mono er heller ikkje heilt på nivå som C# i Windows :)

Det er ikke den helt store forskjellen i ytelse mellom Mono og .NET. Mono har derimot støtte for SIMD som kan være nyttig i noen applikasjoner.

Det er derimot en vesentlig ytelsesforskjell mellom CPython runtime og .NET/Mono.

Lenke til kommentar

Jeg vil si at C og C++/Java vil mette det man burde kunne av programmering. Da har man et skriptingspråk, et lavnivå og et høynivå-språk.

 

Nok en gang så skriker jeg mot veggen når jeg sier at Java får ufortjent mye hat, men om du ikke er interessert i å lære Java så vil jeg sterkt anbefale C++.

Lenke til kommentar

C++ gir både god ytelse og god typesikkerhet. const-statementet i diverse anvendelser eliminerer en del feil man lett får i java og andre språk (out/ref i C# gir samme sikkerhet). Bruk av referanser i stedet for pekere eliminerer også noen potensielle feil i forhold til C.

 

Biblioteket Boost gir mye av den objektorienterte funksjonaliteten som er innebygd i Java i forhold til systemuavhengig multithreading, synkronisering, socketkommunikasjon, containere og så videre. Anbefales.

 

Har selv jobbet mye i fortran, C, C++, VB, Pascal, C#, Java og diverse scriptspråk, alt etter behov. C++ står som en favoritt, og trenger du ekstra hastighet kan du kjøpe kompilator fra Intel i stedet for å bruke MS Visual Studio eller gnu-kompilatorer.

  • Liker 1
Lenke til kommentar

Repterer det andre har sagt; hvis du ikke får "nok" ytelse fra Python så er det mest sannsynlig dine egne algoritmer som ikke er gode nok. Det hjelper ikke å gå over til C/C++/etc hvis du ender opp med like ineffektiv kode der også. Men hvis du er sikker på at det er Python som er flaskehalsen, så anbefaler jeg å kombinere Python med C/C++ og kjørt de delene av scriptet som bruker lang tid i der i stedet. Hvis tidsbruk er kritisk så skriver du hele mølja i C/C++/etc.

Lenke til kommentar

Nå er Python et skripting-språk mens C++ er et funksjonelt og objektorientert språk. Du kommer ikke langt om du kun skal skrive ting i Python.

 

Det kommer jo helt an på hva man skal bruke det til. Jeg kunne enkelt klart meg med kun Python til å gjøre numeriske simuleringer på jobben. På samme side så gjør både C/C++ og f.eks Matlab samme jobben.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...