Vinnaren i pepparkakshustävlingen!
  • 2
  • 3
2017-04-05, 17:35
  #25
Medlem
Sunimods avatar
Citat:
Ursprungligen postat av Sane?
Är vi kvar på VB.NET = C# så missupfattar du det. Det är två helt fristående språk med egna features som kompileras till cli.

Det är som att kalla Java och Clojure samma språk för att båda kompileras till java bytecode.


Jag vet att VB.net och C# är två olika språk men tveksam om det är några större skillnader i vad de åstadkommer prestandamässigt.

Båda är .net språk som skapar cli kod och som sedan kompileras till körbar kod för processorn.

Men är det någon skillnad i den cli kod som skapas?
Citera
2017-04-05, 21:02
  #26
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av Sunimod
Jag vet att VB.net och C# är två olika språk men tveksam om det är några större skillnader i vad de åstadkommer prestandamässigt.

Båda är .net språk som skapar cli kod och som sedan kompileras till körbar kod för processorn.

Men är det någon skillnad i den cli kod som skapas?
Du har en stor skillnad.

VB.NET tillåter inte generellt unsafe code utan du måste jobba dig förbi det.
Med C# är det bara att köra:
Kod:
unsafe
{
    ....

Har inte grävt ner mig djupare i prestandan unsafe kontra cli kod men jag kan tänka mig att vid grafiska appar har det stor betydelse.
Citera
2017-04-05, 21:23
  #27
Medlem
Citat:
Ursprungligen postat av MeanME
Du har en stor skillnad.

VB.NET tillåter inte generellt unsafe code utan du måste jobba dig förbi det.
Med C# är det bara att köra:
Kod:
unsafe
{
    ....

Har inte grävt ner mig djupare i prestandan unsafe kontra cli kod men jag kan tänka mig att vid grafiska appar har det stor betydelse.

Bara o bara, måste man inte också lägga till -unsafe eller nått när man kompilerar? :P
Det jag använt unsafe till är när jag leker med vissa c/c++ bibliotek, bildredigering osv.
Citera
2017-04-05, 21:55
  #28
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av Gottisborgen
Bara o bara, måste man inte också lägga till -unsafe eller nått när man kompilerar? :P
Det jag använt unsafe till är när jag leker med vissa c/c++ bibliotek, bildredigering osv.
LOL

Jo den växeln brukar kompilatorn gilla, det är sant.


Jag har det när jag jobbar med grafer/grafik och använder mig av lockbits.
När man jobbar med pixelgrafik får man enbart stressrelaterade sjukdomar om man använder standardgrafiken.

Har ju programmerat ""unsafe"" enligt MS sedan 70-talets slut / 80-talets början som den gamla gubbjävel jag är så jag tycker jag kan få fortsätta med det utan att mobbas med "unsafe".

Ska nog byta ut "unsafe" mot "traditional" i VS hädanefter.
Citera
2017-04-06, 05:24
  #29
Medlem
Sunimods avatar
Citat:
Ursprungligen postat av MeanME
Du har en stor skillnad.

VB.NET tillåter inte generellt unsafe code utan du måste jobba dig förbi det.
Med C# är det bara att köra:
Kod:
unsafe
{
    ....

Har inte grävt ner mig djupare i prestandan unsafe kontra cli kod men jag kan tänka mig att vid grafiska appar har det stor betydelse.


Hade jag faktiskt missat.
Men det är nog därför jag tycker så mycket om vb.net mot c just för att slippa all "osäker" kod.
Alla jäkla fällor med deklaration av listor för textfält som man hanterar och med ett avslutande binärt 0 och missar med att lägga dit en textsträng lite längre än deklarerade listan. Även sätt att adderar strängar till varandra mm i c# som är mycket likt vb.net och långt ifrån c

Sådant slipper men i vb.net och i c# vilket ger en klar signal om likheter "bakom skynket" i de båda språken.
Citera
2017-04-06, 09:31
  #30
Medlem
Sane?s avatar
Citat:
Ursprungligen postat av Sunimod
Jag vet att VB.net och C# är två olika språk men tveksam om det är några större skillnader i vad de åstadkommer prestandamässigt.

Båda är .net språk som skapar cli kod och som sedan kompileras till körbar kod för processorn.

Men är det någon skillnad i den cli kod som skapas?
Jag är inte nog insatt i VB för att svara på det men vet att VB:s or och and inte har någon direkt motsvarighet i C#. VB kan inte heller hantera C#:s indexers har jag för mig. Tvivlar dessutom på att VB kan hantera någon ny C#7 feature. Vilken IL-kod som skapas när de olika språken kompileras har jag inte satt mig in i.

Angående unsafe så används det väl främst när man vill sköta sin egen minneshantering, oftast för att hålla nere antalet allokeringar vilket leder till mindre GC-jobb.
Citera
2017-04-06, 10:35
  #31
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av Sunimod
Hade jag faktiskt missat.
Men det är nog därför jag tycker så mycket om vb.net mot c just för att slippa all "osäker" kod.
Alla jäkla fällor med deklaration av listor för textfält som man hanterar och med ett avslutande binärt 0 och missar med att lägga dit en textsträng lite längre än deklarerade listan. Även sätt att adderar strängar till varandra mm i c# som är mycket likt vb.net och långt ifrån c

Sådant slipper men i vb.net och i c# vilket ger en klar signal om likheter "bakom skynket" i de båda språken.
Osäker och osäker det är ju pekare som MS ser som osäkra.
Citat:
The unsafe keyword denotes an unsafe context, which is required for any operation involving pointers. For more information, see Unsafe Code and Pointers.
https://msdn.microsoft.com/en-us/library/chfa2zb8.aspx

Citat:
To maintain type safety and security, C# does not support pointer arithmetic, by default. However, by using the unsafe keyword, you can define an unsafe context in which pointers can be used. For more information about pointers, see the topic Pointer types.
https://msdn.microsoft.com/en-us/library/t2yzs44b.aspx

Det går ju att komma runt det i VB om du t.ex kör "pekarkoden" i en annan assembly som du sedan reffar till har jag för mig. (Jag suger stenstyggt på VB men har jag fel kommer garanterat någon snäll person att påpeka det.)

Jag gillar stränghanteringen i C#, den är jäkligt smidig att jobba med tycker jag.
Man har tänkt till lite där.
Citera
2017-04-06, 12:21
  #32
Medlem
Sunimods avatar
Citat:
Ursprungligen postat av MeanME

Jag gillar stränghanteringen i C#, den är jäkligt smidig att jobba med tycker jag.
Man har tänkt till lite där.

Ja ungefär som VB varit i många år
Citera
2017-04-06, 16:59
  #33
Medlem
Trillskes avatar
Det är nära oanvändbart i praktiken, eftersom det finns få tillfälle då det både är en bra idé att använda unsafe, samt en bra idé att använda C# till uppgiften överhuvudtaget.

Men finns det tillämpningar. Du kan få bort bounds checking - kanske har du gjort en monsteralgoritm och av någon anledning inte vill/kan slussa den uppgiften till något annat språk. Men som sagt, det kräver väldigt specifika omständigheter.

Till 95% av alla andra uppgifter krossar C#/.NET C++, oavsett vad någon källarkodare utan koppling till product management tror. Det är lite intressant att C++ överhuvudtaget är populärt eftersom det som börjar ifrågasättas lite i C# är OOP. Och för operativ och dylikt brukar C vara goto-valet, så C++ har verkligen hamnat i en snäv genre.

Tyvärr tycker jag likt många andra att C++ är ett av de roligaste språken att göra saker med. Men vad som är kul för egen del och bra för helheten är verkligen olika saker.
__________________
Senast redigerad av Trillske 2017-04-06 kl. 17:08.
Citera
2017-04-06, 20:21
  #34
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av Trillske
Det är nära oanvändbart i praktiken, eftersom det finns få tillfälle då det både är en bra idé att använda unsafe, samt en bra idé att använda C# till uppgiften överhuvudtaget.

Men finns det tillämpningar. Du kan få bort bounds checking - kanske har du gjort en monsteralgoritm och av någon anledning inte vill/kan slussa den uppgiften till något annat språk. Men som sagt, det kräver väldigt specifika omständigheter.

Till 95% av alla andra uppgifter krossar C#/.NET C++, oavsett vad någon källarkodare utan koppling till product management tror. Det är lite intressant att C++ överhuvudtaget är populärt eftersom det som börjar ifrågasättas lite i C# är OOP. Och för operativ och dylikt brukar C vara goto-valet, så C++ har verkligen hamnat i en snäv genre.

Tyvärr tycker jag likt många andra att C++ är ett av de roligaste språken att göra saker med. Men vad som är kul för egen del och bra för helheten är verkligen olika saker.
Kom igen nu...

Du vet oftast inte om en C++ native/cli eller en C# app är snabbast utan är det väldigt viktigt med prestandan så får du faktiskt snällt sätta dig ner och göra ett prestandatest för att utröna vilket.

Sedan kan du få sitta en bra stund och laborera för att optimera koden för resp. språk.
Det finns hur många tester som helst ute på nätet som prompt visar det ena språkets fördel över det andra så den enda vettiga slutsatsen man kan dra är att man får sätta sig ner och testa själv och göra det bästa man kan för att optimera koden.

Du kan ju läsa här vad forskare som jobbar med frågor som detta anser om det hela.
https://www.linkedin.com/pulse/c-fas...-joe-ellsworth
Citera
2017-04-07, 13:44
  #35
Medlem
Sane?s avatar
Ni som är intresserade av prestanda och minnesoptimering rekommenderar jag att läsa Oren Eini's blogg på http://www.ayende.com
Han skriver dokument databasen RavenDB (nästan) helt i C#.
Citera
2017-04-08, 15:18
  #36
Medlem
MeanMEs avatar
Citat:
Ursprungligen postat av Sane?
Ni som är intresserade av prestanda och minnesoptimering rekommenderar jag att läsa Oren Eini's blogg på http://www.ayende.com
Han skriver dokument databasen RavenDB (nästan) helt i C#.
Tack för den länken.

Fanns en hel del läsvärt där.
Citera
  • 2
  • 3

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback