Benchmark lenguajes

09/01/2004 - 08:26 por Tako | Informe spam
Si a alguien le interesa, en osnews.com hay una pequeña comparativa de
lenguajes (C, plataforma .NET y Java)

http://osnews.com/comment.php?news_...p;limit=no

se limita eso si a operaciones aritméticas y acceso a disco pero tiene
cosas interesantes, eso si, se nota que el que ha hecho el benchmark está
algo a favor de Java :)

Espero que os gusta.
 

Leer las respuestas

#1 Willy \(MX\)
09/01/2004 - 15:26 | Informe spam
Java a mi parecer es el que en su conjunto peor sale -bueno de hecho el que
peor salio fue Python, pero ni al caso ya que se trata de codigo
interpretado-.

El mejor fue VC++ pero fue con "codigo no administrado" por lo que solo lo
podemos comparar contra gcc -el otro extremo con codigo compilado-.

Lo que si me sorprendio un poco al principio fue la notable diferencia en lo
referente al I/O de C# contra VB.NET porque en teoria, y tal y como se
menciona en el articulo, debieron tener casi los mismos resultados dado que
se compilan al mismo codigo MSIL.

¿Es mejor C# para I/O que VB.NET? No precisamente, reescribiendo la funcion
de IO del modulo de VB para emplear StreamWriter y StreamReader tal como en
la clase en C# empleada:

Function IO(ByVal ioMax As Integer) As Long
Dim milliseconds As Long
startTime = Now
Dim fileName As String = "C:\TestVB.txt"
Dim i As Integer = 0
Dim myString As String = _
"abcdefghijklmnopqrstuvwxyz1234567890" & _
"abcefghijklmnopqrstuvwxyz1234567890abcdefgh"
Dim readLine As String
Dim myStreamWriter as StreamWriter = new StreamWriter(fileName)
Do While (i < ioMax)
myStreamWriter.WriteLine(myString)
i += 1
Loop
myStreamWriter.Close()
i = 0
Dim myStreamReader as StreamReader = new StreamReader(fileName)
Do While (i < ioMax)
readLine = myStreamReader.ReadLine()
i += 1
Loop
stopTime = Now
elapsedTime = stopTime.Subtract(startTime)
milliseconds = CLng(elapsedTime.TotalMilliseconds)
Console.WriteLine("I/O elapsed time: " & milliseconds & _
" ms with a max of " & ioMax)
Console.WriteLine(" i: " & i)
Console.WriteLine(" readLine: " & readLine)
Return milliseconds
End Function

Al ejecutar el resultado ahora si que es similar con el de C#, lo que era de
esperarse. Esto fue otra de las cosas que se le escaparon a quien hizo en
Benchmark.

Otra mas fue que de hecho para J# el codigo que empleo no es para el .NET
Framework precisamente, el codigo "corregido" (a partir tambien del de C#)
se los dejo adjunto para quien le interese.

Por lo que en terminos generales a mi parecer, tal y como se planteo este
Benchmark, y con el codigo y los resultados correctos, en realidad gano la
CR de .NET sobre la VM de Java. Al menos por ahora, habria que hacerla con
la version 1.5 del J2SE, una vez que se libere, contra la proxima version
del Framework para ver que sale.

Sin embargo, el Benchmark me parece muy simplista ya que le faltan cosas
(creacion y manipulacion de objetos?, manejo de memoria -GC-?, ...?) ademas
de otras que no tienen que ver con el rendimiento tales como la curva de
aprendizaje, prestaciones de la plataforma, etc... que son necesarias para
formar una opinion, y mas para tomar una decision, a favor de cualquier
lenguaje o plataforma.

De cualquier modo me diverti un rato.

Saludos.
Willy (MX)



"Tako" escribió en el mensaje
news:

Si a alguien le interesa, en osnews.com hay una pequeña comparativa de
lenguajes (C, plataforma .NET y Java)

http://osnews.com/comment.php?news_...p;limit=no

se limita eso si a operaciones aritméticas y acceso a disco pero tiene
cosas interesantes, eso si, se nota que el que ha hecho el benchmark está
algo a favor de Java :)

Espero que os gusta.







begin 666 Benchmark2.jsl
M+RH@*&,I(#(P,#0@=VEL;'EX;V9T0&AO=&UA:6PN8V]M("HO#0H-"G!A8VMA
M9V4@($)E;F-H;6%R:U]*4VAA<G [#0H-"FEM<&]R="!3>7-T96TN*CL-"FEM
M<&]R="!3>7-T96TN24\N*CL-"@T*"6-L87-S($)E;F-H;6%R:TI3:&%R< T*
M"7L-"@D)<W1A=&EC($1A=&54:6UE('-T87)T5&EM93L-"@D)<W1A=&EC($1A
M=&54:6UE('-T;W!4:6UE.PT*"0ES=&%T:6,@5&<'-E9%1I
M;64[#0H)"0T*"0EP=6)L:6,@<W1A=&EC('9O:60@;6%I;BA3=')I;F=;72!A
M<F=S*0T*"0E[#0H)"0EI;G0@:6YT36%X(#T@,3 P,# P,# P,#L@+R\@,4(-
M"@D)"61O=6)L92!D;W5B;&5-:6X@/2 Q,# P,# P,# P,"XP1#L@+R\@,3!"
M#0H)"0ED;W5B;&&]U8FQE36%X(#T@,3$P,# P,# P,# N,$0[("\O(#$Q
*"0D);&]N9R!L;VYG36EN(#T@,3 P,# P,# P,#!,.R O+R Q,$(-"@D)
M"6QO;F<@;&]N9TUA>" ](#$Q,# P,# P,# P3#L@+R\@,3%"#0H)"0ED;W5B
M;&4@=')I9TUA>" ](#$P,# P,# P.R O+R Q,$T-"@D)"6EN="!I;TUA>" ]
M(#$P,# P,# [("\O(#%-"0T*"0D-"@D)"4-O;G-O;&4N5W)I=&5,:6YE*")3
M=&%R="!296%L($HC(&)E;F-H;6%R:R(I.PT*#0H)"0EL;VYG(&EN=$%R:71H
M;65T:6-4:6UE(#T@:6YT07)I=&AM971I8RAI;*"0D);&]N9R!D
M;W5B;&5!<FET:&UE=&EC5&EM92 ](&1O=6)L94%R:71H;65T:6,H9&]U8FQE
M36EN+"!D;W5B;&*"0D);&]N9R!L;VYG07)I=&AM971I8U1I;64@
M/2!L;VYG07)I=&AM971I8RAL;VYG36EN+"!L;VYG36%X*3L-"@D)"6QO;F<@
M=')I9U1I;64@/2!T<FEG*'1R:6=*"0D);&]N9R!I;U1I;64@/2!I
M;RAI;TUA>"D[#0H)"0EL;VYG('1O=&%L5&EM92 ](&EN=$%R:71H;65T:6-4
M:6UE("&]U8FQE07)I=&AM971I8U1I;64@*R -"@D)"0EL;VYG07)I=&AM
M971I8U1I;64@*R!T<FEG5&EM92 K(&EO5&EM93L-"@D)"0T*"0D)0V]N<V]L
M92Y7<FET94QI;F4H(E1O=&%L($HC(&)E;F-H;6%R:R!T:6UE.B B("L@=&]T
M86Q4:6UE("L@(B!M<R(I.PT*"0D)0V]N<V]L92Y7<FET94QI;F4H(D5N9"!*
M(R!B96YC:&UA<FLB*3L-"@D)?0T*#0H-"@D)+RH-"@D)("%T:"!B96YC
M:&UA<FL@=7-I;F<@:6YT<RX-"@D)("HO#0H)"7-T871I8R!L;VYG(&EN=$%R
M:71H;65T:6,H:6YT(&EN=$UA>"D-"@D)>PT*"0D);&]N9R!E;&%P<V5D36EL
M;&ES96-O;F1S.PT*"0D)<W1A<G14:6UE(#&%T951I;64N9V5T7TYO=
M.PT*"0D-"@D)"6EN="!I;G1297-U;'0@/2 Q.PT*"0D):6YT(&D@/2 Q.PT*
M"0D)=VAI;&4@*&D@/"!I;#0H)"0E[#0H)"0D):6YT4F5S=6QT("T]
M(&DK*SL-"@D)"0EI;G1297-U;'0@*ST@:2LK.PT*"0D)"6EN=%)E<W5L=" J
M/2!I*RL[#0H)"0D):6YT4F5S=6QT("\](&DK*SL-"@D)"7T-"@T*"2 @(" @
M(" @<W1O<%1I;64@/2!$871E5&EM92YG971?3F]W*"D[#0H)"0EE;&%P<V5D
M5&EM92 ]('-T;W!4:6UE+E-U8G1R86-T*'-T87)T5&EM92D[#0H)"0EE;&%P
M<V5D36EL;&ES96-O;F1S(#T@*&QO;F<I96QA<'-E9%1I;64N9V5T7U1O=&%L
M36EL;&ES96-O;F1S*"D[#0H-"@D)"4-O;G-O;&4N5W)I=&5,:6YE*"));G0@
M87)I=&AM971I8R!E;&%P<V5D('1I;64Z("(@*R!E;&%P<V5D36EL;&ES96-O
M;F1S("L@#0H)"0D)"2 @("(@;7,@=VET:"!M87@@;V8@(B K(&EN=$UA>"D[
M#0H)"0E#;VYS;VQE+E=R:71E3&(&DZ("(@*R!I*3L-"@D)"4-O;G-O
M;&4N5W)I=&5,:6YE*"(@:6YT4F5S=6QT.B B("L@:6YT4F5S=6QT*3L-"@D)
M"7)E='5R;B!E;&%P<V5D36EL;&ES96-O;F1S.PT*"0E]#0H-"@T*"0DO*BH-
M"@D)("%T:"!B96YC:&UA<FL@=7-I;F<@9&]U8FQE<RX-"@D)("HO#0H)
M"7-T871I8R!L;VYG(&1O=6)L94%R:71H;65T:6,H9&]U8FQE(&1O=6)L94UI
M;&]U8FQE(&1O=6)L94UA>"D-"@D)>PT*"0D);&]N9R!E;&%P<V5D36EL
M;&ES96-O;F1S.PT*"0D)<W1A<G14:6UE(#&%T951I;64N9V5T7TYO=
M.PT*#0H)"0ED;W5B;&&]U8FQE4F5S=6QT(#&]U8FQE36EN.PT*"0D)
M9&]U8FQE(&D@/2!D;W5B;&5-:6X[#0H)"0EW:&EL92 H:2 \(&1O=6)L94UA
M>"D-"@D)"7L-"@D)"0ED;W5B;&5297-U;'0@+3T@:2LK.PT*"0D)"61O=6)L
M95)E<W5L=" K/2!I*RL[#0H)"0D)9&]U8FQE4F5S=6QT("H](&DK*SL-"@D)
M"0ED;W5B;&5297-U;'0@+ST@:2LK.PT*"0D)?0T*"0D-"@D)"7-T;W!4:6UE
M(#&%T951I;64N9V5T7TYO=*"0D)96QA<'-E9%1I;64@/2!S=&]P
M5&EM92Y3=6)T<F%C="AS=&%R=%1I;64I.PT*"0D)96QA<'-E9$UI;&QI<V5C
M;VYD<R ]("AL;VYG*65L87!S9614:6UE+F=E=%]4;W1A;$UI;&QI<V5C;VYD
M*"0D-"@D)"4-O;G-O;&4N5W)I=&5,:6YE*")$;W5B;&)I=&AM
M971I8R!E;&%P<V5D('1I;64Z("(@*R!E;&%P<V5D36EL;&ES96-O;F1S("L@
M#0H)"0D)(B!M<R!W:71H(&UI;B!O9B B("&]U8FQE36EN("L@(BP@;6%X
M(&]F("(@*R!D;W5B;&*"0D)0V]N<V]L92Y7<FET94QI;F4H(B!I
M.B B("L@:2D[#0H)"0E#;VYS;VQE+E=R:71E3&(&1O=6)L95)E<W5L
M=#H@(B K(&1O=6)L95)E<W5L="D[#0H)"0ER971U<'-E9$UI;&QI
M<V5C;VYD<SL-"@D)?0T*#0H-"@D)+RHJ#0H)"2 J($UA=&@@8F5N8VAM87)K
M('5S:6YG(&QO;F=S+@T*"0D@*B\-"@D)<W1A=&EC(&QO;F<@;&]N9T%R:71H
M;65T:6,H;&]N9R!L;VYG36EN+"!L;VYG(&QO;F=#0H)"7L-"@D)"6QO
M;F<@96QA<'-E9$UI;&QI<V5C;VYD<SL-"@D)"7-T87)T5&EM92 ]($1A=&54
M:6UE+F=E=%].;W<H*3L-"@T*"0D);&]N9R!L;VYG4F5S=6QT(#T@;&]N9TUI
M;CL-"@D)"6QO;F<@:2 ](&QO;F=-:6X[#0H)"0EW:&EL92 H:2 \(&QO;F=-
#0H)"0E[#0H)"0D);&]N9U)E<W5L=" M/2!I*RL[#0H)"0D);&]N9U)E
M<W5L=" K/2!I*RL[#0H)"0D);&]N9U)E<W5L=" J/2!I*RL[#0H)"0D);&]N
M9U)E<W5L=" O/2!I*RL[#0H)"0E]#0H-"@D)"7-T;W!4:6UE(#&%T951I
M;64N9V5T7TYO=*"0D)96QA<'-E9%1I;64@/2!S=&]P5&EM92Y3=6)T
M<F%C="AS=&%R=%1I;64I.PT*"0D)96QA<'-E9$UI;&QI<V5C;VYD<R ]("AL
M;VYG*65L87!S9614:6UE+F=E=%]4;W1A;$UI;&QI<V5C;VYD*"0D-
M"@D)"4-O;G-O;&4N5W)I=&5,:6YE*"),;VYG(&%R:71H;65T:6,@96QA<'-E
M9"!T:6UE.B B("<'-E9$UI;&QI<V5C;VYD<R K( T*"0D)"2(@;7,@
M=VET:"!M:6X@;V8@(B K(&QO;F=-:6X@*R B+"!M87@@;V8@(B K(&QO;F=-
*"0D)0V]N<V]L92Y7<FET94QI;F4H(B!I.B B("L@:2D[#0H)"0E#
M;VYS;VQE+E=R:71E3&(&QO;F)7-U;'0Z("(@*R!L;VYG4F5S=6QT
M*3L-"@D)"7)E='5R;B!E;&%P<V5D36EL;&ES96-O;F1S.PT*"0E]#0H-"@T*
M"0DO*BH-"@D)("%L8W5L871E('-I;]S+"!T86XL(&QO9RP@<W%U
M87)E(')O;]R(&%L;"!N=6UB97)S('5P('1O(&$@;6%X+@T*"0D@*B\-
M"@D)<W1A=&EC(&QO;F<@=')I9RAD;W5B;&4@=')I9TUA>"D-"@D)>PT*"0D)
M;&]N9R!E;&%P<V5D36EL;&ES96-O;F1S.PT*"0D)<W1A<G14:6UE(#&%T
M951I;64N9V5T7TYO=*"0D-"@D)"61O=6)L92!S:6YE(#T@,"XP1#L-
M"@D)"61O=6)L92!C;W-I;F4@/2 P+C!$.PT*"0D)9&]U8FQE('1A;F=E;G0@
M/2 P+C!$.PT*"0D)9&]U8FQE(&QO9V%R:71H;2 ](# N,$0[#0H)"0ED;W5B
M;&4@<W%U87)E4F]O=" ](# N,$0["0D-"@D)"61O=6)L92!I(#T@,"XP1#L-
M"@D)"7=H:6QE*&D@/"!T<FEG36%X*0T*"0D)>PT*"0D)"7-I;F4@/2!3>7-T
M96TN36%T:"Y3:6XH:2D[#0H)"0D)8V]S:6YE(#=&5M+DUA=&@N0V]S
M*&DI.PT*"0D)"71A;F=E;G0@/2!3>7-T96TN36%T:"Y486XH:2D[#0H)"0D)
M;&]G87)I=&AM(#=&5M+DUA=&@N3&]G,3 H:2D[#0H)"0D)<W%U87)E
M4F]O=" ](%-Y<W1E;2Y-871H+E-Q<G0H:2D[#0H)"0D):2LK.PT*"0D)?0T*
M"0D-"@D)"7-T;W!4:6UE(#&%T951I;64N9V5T7TYO=*"0D)96QA
M<'-E9%1I;64@/2!S=&]P5&EM92Y3=6)T<F%C="AS=&%R=%1I;64I.PT*"0D)
M96QA<'-E9$UI;&QI<V5C;VYD<R ]("AL;VYG*65L87!S9614:6UE+F=E=%]4
M;W1A;$UI;&QI<V5C;VYD*"0D-"@D)"4-O;G-O;&4N5W)I=&5,:6YE
M*")4<FEG(&5L87!S960@=&EM93H@(B K(&5L87!S961-:6QL:7-E8V]N9',@
M*R -"@D)"0DB(&US('=I=&@@;6%X(&]F("(@*R!T<FEG36%X*3L-"@D)"4-O
M;G-O;&4N5W)I=&5,:6YE*"(@:3H@(B K(&DI.PT*"0D)0V]N<V]L92Y7<FET
M94QI;F4H(B!S:6YE.B B("L@<VEN92D[#0H)"0E#;VYS;VQE+E=R:71E3&EN
(&-O<VEN93H@(B K(&-O<VEN92D[#0H)"0E#;VYS;VQE+E=R:71E3&EN
('1A;F=E;G0Z("(@*R!T86YG96YT*3L-"@D)"4-O;G-O;&4N5W)I=&5,
M:6YE*"(@;&]G87)I=&AM.B B("L@;&]G87)I=&AM*3L-"@D)"4-O;G-O;&4N
M5W)I=&5,:6YE*"(@<W%U87)E4F]O=#H@(B K('-Q=6%R95)O;W0I.PT*"0D)
M<F5T=7)N(&5L87!S961-:6QL:7-E8V]N9',[#0H)"7T-"@T*#0H@(" @(" @
M(" @(" @+RHJ#0H)(" @(" J(%=R:71E(&UA>"!L:6YE<R!T;R!A(&9I;&4L
M('1H96X@<F5A9"!M87@@;&EN97,@8F%C:R!I;B!F<F]M(&9I;&4N#0H)(" @
M(" J+PT*"0ES=&%T:6,@;&]N9R!I;RAI;G0@:6]#0H)"7L-"@D)"6QO
M;F<@96QA<'-E9$UI;&QI<V5C;VYD<SL-"@D)"7-T87)T5&EM92 ]($1A=&54
M:6UE+F=E=%].;W<H*3L-"@D)#0H)"0E3=')I;F<@9FEL94YA;64@/2 B0SI<
M7%1E<W1*4VAA<G N='AT(CL-"@D)"5-T<FEN9R!T97AT3&EN92 ](")A8F-D
M969G:&EJ:VQM;F]P<7)S='5V=WAY>C$R,S0U-C<X.3!A8F-D969G:&EJ:VQM
M;F]P<7)S='5V=WAY>C$R,S0U-C<X.3!A8F-D969G:"([#0H)"0EI;G0@:2 ]
M(# [#0H)"0E3=')I;F<@;7E,:6YE(#T@(B([#0H)"0T*"0D)=')Y#0H)"0E[
M"0T*"0D)"5-T<F5A;5=R:71E<B!S=')E86U7<FET97(@/2!N97<@4W1R96%M
M5W)I=&5R*&9I;&5.86UE*3L-"@D)"0EW:&EL92 H:2LK(#P@:6]#0H)
M"0D)>PT*"0D)"0ES=')E86U7<FET97(N5W)I=&5,:6YE*'1E>'1,:6YE*3L-
M"@D)"0E]#0H)"0D)<W1R96%M5W)I=&5R+D-L;W-E*"D[#0H-"@D)"0EI(#T@
M,#L-"@D)"0E3=')E86U296%D97(@<W1R96%M4F5A9&5R(#T@;F5W(%-T<F5A
M;5)E861E<BAF:6QE3F%M92D[#0H)"0D)=VAI;&4@*&DK*R \(&EO36%X*2 -
M"@D)"0E[#0H)"0D)"6UY3&EN92 ]('-T<F5A;5)E861E<BY296%D3&
M.PT*"0D)"7T-"@D)"7T-"@D)"6-A=&-H("A)3T5X8V5P=&EO;B!E*0T*"0D)
M>PT*"0D)"5-Y<W1E;2Y#;VYS;VQE+E=R:71E*&4N9V5T7TUE<W-A9V4H*2D[
M#0H)"0E]#0H)"0T*"0D)<W1O<%1I;64@/2!$871E5&EM92YG971?3F]W*"D[
M#0H)"0EE;&%P<V5D5&EM92 ]('-T;W!4:6UE+E-U8G1R86-T*'-T87)T5&EM
M92D[#0H)"0EE;&%P<V5D36EL;&ES96-O;F1S(#T@*&QO;F<I96QA<'-E9%1I
M;64N9V5T7U1O=&%L36EL;&ES96-O;F1S*"D[#0H)"0D)#0H)"0E#;VYS;VQE
M+E=R:71E3&\@96QA<'-E9"!T:6UE.B B("<'-E9$UI;&QI
M<V5C;VYD<R K( T*"0D)"2(@;7,@=VET:"!M87@@;V8@(B K(&EO36%X*3L-
M"@D)"4-O;G-O;&4N5W)I=&5,:6YE*"(@:3H@(B K(&DI.PT*"0D)0V]N<V]L
M92Y7<FET94QI;F4H(B!M>4QI;F4Z("(@*R!M>4QI;F4I.PT*"0D)<F5T=7)N
B(&5L87!S961-:6QL:7-E8V]N9',[#0H)"7T-"@E]#0H-"@``
`
end

Preguntas similares