Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Don't forget to read Tuesday's email newsletter for your chance to win a free copy of Construct 2!


#ActualSimonForsman

Posted 27 April 2013 - 02:49 PM

Thank you for the advice
I had bad thoughts about doing both because It might overwhelm me and might slow the leraning progress of both.
But since you put it in that way,maybe studying both will be more fun!
 
What do you mean by "performance" exactly?

Languages don't really affect performance by themselves(With some exceptions), their implementations (compilers/vms) do.

Lower level languages give you more control over the exact way in which things are done and thus more of the responsibility for creating efficient/secure/whatever code is moved from the compiler/vm to the programmer, in cases where the compiler is unable to do a good job a good programmer can get better performance by using a lower level language.

Compilers are improving rapidly though and hardware is becoming more complex, when i started out we wrote all performance critical routines using x86 assembly, C++ was considered a slow high level language and Java didn't exist.

Today C++ is considered low level, almost noone uses assembly directly since it only confuses the compiler and it is becoming really difficult to do a better job than the compiler anyway.

JIT compilers are allready outperforming ahead of time compilers in some cases. (Java using Oracles server JVM outperforms both msvc and gcc(the two most popular C++ compilers on the PC) if you make heavy use of dynamic dispatch for example). the performance differences between ahead of time compilers and JIT compilers are very small today and on the PC where you do not know what hardware the user will have it is quite likely that ahead of time compilers used by for example C++ will result in worse performance.

(Java has a few performance problems on the PC(x86) due to accuracy requirements in the language that cannot be solved unless either the language or the platform changes but C# doesn't have any such problems).

Today the biggest performance disadvantage you get with C# or Java is that you cannot write SIMD (SSE etc) code yourself (Mono has limited SIMD support that is a bit of a work in progress but .Net has nothing yet) and the VMs still do a fairly poor job at writing it for you. (Strictly speaking you cannot write SIMD code using C++ either but since C++ allows compilers to add their own extensions to the language you can still do it (allthough such code is not portable between compilers it does get the job done)

#1SimonForsman

Posted 27 April 2013 - 02:46 PM

Thank you for the advice
I had bad thoughts about doing both because It might overwhelm me and might slow the leraning progress of both.
But since you put it in that way,maybe studying both will be more fun!
 
What do you mean by "performance" exactly?

Strictly speaking languages don't affect performance by themselves(With some exceptions), their implementations (compilers/vms) do.

Lower level languages give you more control over the exact way in which things are done and thus more of the responsibility for creating efficient/secure/whatever code is moved from the compiler/vm to the programmer, in cases where the compiler is unable to do a good job a good programmer can get better performance by using a lower level language.

Compilers are improving rapidly though and hardware is becoming more complex, when i started out we wrote all performance critical routines using x86 assembly, C++ was considered a slow high level language and Java didn't exist.

Today C++ is considered low level, almost noone uses assembly directly since it only confuses the compiler and it is becoming really difficult to do a better job than the compiler anyway.

JIT compilers are allready outperforming ahead of time compilers in some cases. (Java using Oracles server JVM outperforms both msvc and gcc(the two most popular C++ compilers on the PC) if you make heavy use of dynamic dispatch for example). the performance differences between ahead of time compilers and JIT compilers are very small today and on the PC where you do not know what hardware the user will have it is quite likely that ahead of time compilers used by for example C++ will result in worse performance.

(Java has a few performance problems on the PC(x86) due to accuracy requirements in the language that cannot be solved unless either the language or the platform changes but C# doesn't have any such problems).

Today the biggest performance disadvantage you get with C# or Java is that you cannot write SIMD (SSE etc) code yourself (Mono has limited SIMD support that is a bit of a work in progress but .Net has nothing yet) and the VMs still do a fairly poor job at writing it for you. (Strictly speaking you cannot write SIMD code using C++ either but since C++ allows compilers to add their own extensions to the language you can still do it (allthough such code is not portable between compilers it does get the job done)

PARTNERS