LINUX.ORG.RU

Открытый ответ-комментарий на статью «Расхожие мифы о Windows и Linux»


0

0

Недавно здесь прошло довольно бурное обсуждение нескольких статей некоего Германа Иванова. Поскольку в обсуждениях на форуме довольно легко теряется нить, я взял на себя труд подвести черту и в краткой форме изложить опровержение целого ряда ошибок и передергиваний автора.

http://www.atmsk.ru/download/win-lin....
http://www.atmsk.ru/download/win-lin2...
http://www.atmsk.ru/download/win-lin3...

Еще раз благодарю за помощь в составлении этих трех документов участников дискуссии.

>>> Начальная страница

★★★★★

Проверено: maxcom

>Масс-медиа (не все, правда) кормятся от мелкомягких.

Не все, но почти все. Если же учесть вероятность попадания конкретного журнала в руки простого обавытеля, то вероятность встретить не прикормленное мелкософтом издание стремится к нулю:(

>У меня до сих пор сохранилась "Компутера" от 1995 года с личными наездами, когда я на презентации завесил WЫndoZe'95 и cli jmp 100 не сработало в OS/2.

А поподробнее нельзя? Завесить виндозу на презентации - страшный грех:)

>У меня, например, есть небольшая статейка про мой любимый Window Maker - если кто захочет опубликовать, pls! Для меня неутомительно странички на две про Linux в месяц регулярно сочинять.

Так ведь в МАССОВЫХ изданиях хрен опубликуют...:(

P.S. Что у тебя интересного по WM есть? Мыль на Ikonta@yandex.ru

Ikonta_521
()

>> Что у тебя интересного по WM есть?

IMHO, к сожалению нет хорошего даже начального тюториала, как сваять окошки под WINGs. Просто был Readme от A.Кохимы и далее "разбирайтесь сами по *.h".

Я тут иногда WINGs код просто лепил в текст сообщений.

NB. Предложение maxcom'у - сделать на _видном_ месте сайта рубрику "статьи наших посетителей сайта".

Пускай виндусячье болото поймет, что тут не только флеймят, но и размещают полезные материалы. Сегодня ночью постараюсь "причесать" код.

NikS
()

>Предложение maxcom'у - сделать на _видном_ месте сайта рубрику "статьи наших посетителей сайта".

С организацией размещения статей аналогично новостям. Помимо этого я бы предложил дать автору статьи права править размещенный материал и, возможно, имеет смысл добавить страницу обсуждения выставленного материала, чтобы автор получал информацию о неточностях и пожеланиях.

Но подобному предложению место в форуме:

http://www.linux.org.ru/view-group.jsp?group=4068

Ikonta_521
()

2Niks:

Ты, еб...трон губастый. Нех.. примеры коверкать.

class Test2
{
public static void main(String[] args)
{
int i = 10;
boolean xx = true;
System.out.println("cc" + (xx ? "aa" + i : "bb" + i));
}
}

Method void main(java.lang.String[])
0 bipush 10
2 istore_1
3 iconst_1
4 istore_2
5 getstatic #2 <Field java.io.PrintStream out>
8 new #3 <Class java.lang.StringBuffer>
11 dup
12 invokespecial #4 <Method java.lang.StringBuffer()>
15 ldc #5 <String "cc">
17 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
20 iload_2
21 ifeq 46
24 new #3 <Class java.lang.StringBuffer>
27 dup
28 invokespecial #4 <Method java.lang.StringBuffer()>
31 ldc #7 <String "aa">
33 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
36 iload_1
37 invokevirtual #8 <Method java.lang.StringBuffer append(int)>
40 invokevirtual #9 <Method java.lang.String toString()>
43 goto 65
46 new #3 <Class java.lang.StringBuffer>
49 dup
50 invokespecial #4 <Method java.lang.StringBuffer()>
53 ldc #10 <String "bb">
55 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
58 iload_1
59 invokevirtual #8 <Method java.lang.StringBuffer append(int)>
62 invokevirtual #9 <Method java.lang.String toString()>
65 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
68 invokevirtual #9 <Method java.lang.String toString()>
71 invokevirtual #11 <Method void println(java.lang.String)>
74 return

Самый умный. Вложил статик переменную и тащится

anonymous
()

2Niks:

Кста, из твоего же примера выдрано.
class Test2 
{
   public static void main(String[] args)
   {
     for(int i = 0; i < 10; i++)
        System.out.println("<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>");
   }
}

   0 aload_0
   1 invokespecial #1 <Method java.lang.Object()>
   4 return

Method void main(java.lang.String[])
   0 iconst_0
   1 istore_1
   2 goto 66
   5 getstatic #2 <Field java.io.PrintStream out>
   8 new #3 <Class java.lang.StringBuffer>
  11 dup
  12 invokespecial #4 <Method java.lang.StringBuffer()>
  15 ldc #5 <String "<b>Field">
  17 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  20 iload_1
  21 invokevirtual #7 <Method java.lang.StringBuffer append(int)>
  24 ldc #8 <String "</b> ">
  26 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  29 ldc #9 <String "<input type="text"">
  31 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  34 ldc #10 <String " size="20" name="Field">
  36 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  39 iload_1
  40 invokevirtual #7 <Method java.lang.StringBuffer append(int)>
  43 ldc #11 <String "" value="Value">
  45 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  48 iload_1
  49 invokevirtual #7 <Method java.lang.StringBuffer append(int)>
  52 ldc #12 <String ""><br>">
  54 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  57 invokevirtual #13 <Method java.lang.String toString()>
  60 invokevirtual #14 <Method void println(java.lang.String)>
  63 iinc 1 1
  66 iload_1
  67 bipush 10
  69 if_icmplt 5
  72 return


Очень оптимально, не правда ли? Вместо того, чтобы собрать
"</b> " + "<input type=\"text\""+ в одну строку, ява делает  два Stringbuffer.append(). Ты посмотри, какой при это overhead идет. Оптимизация в одну строку работает только в том случае, если ВСЕ известно заранее на стадии компиляции. (кста, мой примерчик, который ты покорябал своими кривыми ручками, не имел статической переменной). 
Если же нет, то начинается вот такая х-ня приведенная выше. Для строк еще ничего. А если идет просто append(Object), там такое начинается... Ты лучше не книжки читай, а исходный код рантайма смотри.

anonymous
()

Не, онанизмус просто невменяем. Просто опасен для окружающих. Так что выход только один - эвтаназия.

>> Самый умный. Вложил статик переменную и тащится

При чем тут static, животное?

class Test { public static void main(String[] args) { int i = 10; { final boolean xx = true & false; String s = "aa" + (xx ? "aa" + i : "bb" + i); } } }

Пускай живность сначала выучит главу про оптимизацию, а потом снова вылезайте сюда народ смешить со своими бредовыми фантазиями.

Поскольку чмо не может себе заработать на книгу, то сжалюсь над убогим и скажу, что это в главе про final'ы халявного 3rd edition Эккеля.

>> твоего же примера

Если животное считает, что я Брюс Эккель, то значит оно не долечилось от острой умственной недостаточности.

NikS (не являющийся B.Eckel'ем)

anonymous
()

2Невменяемый икс:

class Test2 
{
   public static void main(String[] args)
   {
	   String ttt;
	   
	   long ss = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     long zz = System.currentTimeMillis();
     
     System.out.println(zz-ss);

     ss = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> <input type=\"text\"  size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     zz = System.currentTimeMillis();
     
     System.out.println(zz-ss);
     
     
   }
}

Результат:
9890
8857

Причмокивай дальше.

anonymous
()
Ответ на: комментарий от anonymous

>>Если животное считает, что я Брюс Эккель, то значит оно не долечилось от острой умственной недостаточности

Ой, что это ты? Слюнкой брызгаешь?

anonymous
()

Кста, вот тебе тоже самое, сделанное и декомплированное C#

//Hello World Program HelloWorld.cs using System;

class HelloWorld { static void Main() { String ttt; for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> " + "<input type=\"text\""+ " size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; } }

.method private hidebysig static void Main() cil managed { .entrypoint // Code size 93 (0x5d) .maxstack 3 .locals init (string V_0, int64 V_1, object[] V_2) IL_0000: ldc.i4.0 IL_0001: conv.i8 IL_0002: stloc.1 IL_0003: br.s IL_0053 IL_0005: ldc.i4.7 IL_0006: newarr [mscorlib]System.Object IL_000b: stloc.2 IL_000c: ldloc.2 IL_000d: ldc.i4.0 IL_000e: ldstr "<b>Field" IL_0013: stelem.ref IL_0014: ldloc.2 IL_0015: ldc.i4.1 IL_0016: ldloc.1 IL_0017: box [mscorlib]System.Int64 IL_001c: stelem.ref IL_001d: ldloc.2 IL_001e: ldc.i4.2 IL_001f: ldstr "</b> <input type=\"text\" size=\"20\" name=\"Field" IL_0024: stelem.ref IL_0025: ldloc.2 IL_0026: ldc.i4.3 IL_0027: ldloc.1 IL_0028: box [mscorlib]System.Int64 IL_002d: stelem.ref IL_002e: ldloc.2 IL_002f: ldc.i4.4 IL_0030: ldstr "\" value=\"Value" IL_0035: stelem.ref IL_0036: ldloc.2 IL_0037: ldc.i4.5 IL_0038: ldloc.1 IL_0039: box [mscorlib]System.Int64 IL_003e: stelem.ref IL_003f: ldloc.2 IL_0040: ldc.i4.6 IL_0041: ldstr "\"><br>" IL_0046: stelem.ref IL_0047: ldloc.2 IL_0048: call string [mscorlib]System.String::Concat(object[]) IL_004d: stloc.0 IL_004e: ldloc.1 IL_004f: ldc.i4.1 IL_0050: conv.i8 IL_0051: add IL_0052: stloc.1 IL_0053: ldloc.1 IL_0054: ldc.i4 0xf4240 IL_0059: conv.i8 IL_005a: blt.s IL_0005 IL_005c: ret } // end of method HelloWorld::Main

ХАХА

anonymous
()

Кста, вот тебе тоже самое, сделанное и декомплированное C# 

//Hello World Program HelloWorld.cs
using System; 

class HelloWorld 
{ 
     static void Main() 
     { 
	     String ttt;
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     }
}


.method private hidebysig static void  Main() cil managed
{
  .entrypoint
  // Code size       93 (0x5d)
  .maxstack  3
  .locals init (string V_0,
           int64 V_1,
           object[] V_2)
  IL_0000:  ldc.i4.0
  IL_0001:  conv.i8
  IL_0002:  stloc.1
  IL_0003:  br.s       IL_0053
  IL_0005:  ldc.i4.7
  IL_0006:  newarr     [mscorlib]System.Object
  IL_000b:  stloc.2
  IL_000c:  ldloc.2
  IL_000d:  ldc.i4.0
  IL_000e:  ldstr      "<b>Field"
  IL_0013:  stelem.ref
  IL_0014:  ldloc.2
  IL_0015:  ldc.i4.1
  IL_0016:  ldloc.1
  IL_0017:  box        [mscorlib]System.Int64
  IL_001c:  stelem.ref
  IL_001d:  ldloc.2
  IL_001e:  ldc.i4.2
  IL_001f:  ldstr      "</b> <input type=\"text\" size=\"20\" name=\"Field"
  IL_0024:  stelem.ref
  IL_0025:  ldloc.2
  IL_0026:  ldc.i4.3
  IL_0027:  ldloc.1
  IL_0028:  box        [mscorlib]System.Int64
  IL_002d:  stelem.ref
  IL_002e:  ldloc.2
  IL_002f:  ldc.i4.4
  IL_0030:  ldstr      "\" value=\"Value"
  IL_0035:  stelem.ref
  IL_0036:  ldloc.2
  IL_0037:  ldc.i4.5
  IL_0038:  ldloc.1
  IL_0039:  box        [mscorlib]System.Int64
  IL_003e:  stelem.ref
  IL_003f:  ldloc.2
  IL_0040:  ldc.i4.6
  IL_0041:  ldstr      "\"><br>"
  IL_0046:  stelem.ref
  IL_0047:  ldloc.2
  IL_0048:  call       string [mscorlib]System.String::Concat(object[])
  IL_004d:  stloc.0
  IL_004e:  ldloc.1
  IL_004f:  ldc.i4.1
  IL_0050:  conv.i8
  IL_0051:  add
  IL_0052:  stloc.1
  IL_0053:  ldloc.1
  IL_0054:  ldc.i4     0xf4240
  IL_0059:  conv.i8
  IL_005a:  blt.s      IL_0005
  IL_005c:  ret
} // end of method HelloWorld::Main

anonymous
()

>> сделанное и декомплированное C#

so what?

Говорящее животное поймали на том, что оно брякнуло слово "static" не по делу, и живность быстренько переминило тему и стала слать мне код не "ди-диез", которое оно смело может запихнуть себе в ... мусорную корзину, поскольку организму не понять, что есть компиляторы из промежуточного кода в исполнительный код.

PS. Живность должна поблагодарить меня за вежливое к ней отношение. Был бы господин Луговский, он бы устроил онанимузу бы такой BDSM, что живность бы на весь период своего существования удовлетворилось бы.

NikS.

anonymous
()

2Nикс онанирующий на яву:

Ну оговорился я. Оговорился. Ессно final. Ибо не дано более компилятору знать. 

И чего ты все время именами пугаешь? Аргументы кончились?
"А вот сийсяс плыдет мой блат-сталсекласник и всем-всем по сеи 
надаёт. Будите знать как миня обызать"

anonymous
()

Ну а по поводу нарушения оптимизации слил? Или срочно книжки трясешь? Ну давай, тряси-тряси.

anonymous
()

>> Ну оговорился я. Оговорился.

Во, уже чему-то научили! Выработка рефлексов - великая вещь.

>> нарушения оптимизации

"нарушение оптимизации" ?????? Сразу видно кулхацкера!

>> именами

Я, к сожалению, не могу так _популярно_раз_и_навсегда_ объяснить, что надо делать с теми, кто разводит "информационный шум".

NikS.

anonymous
()

2Niks:

Ну а что ты делаешь сейчас. Мудозвонируешь, не более. Неужели не стыдно такому умному (в прошедшем времени) и хорошему ибмеру, читающему много-много книжек. Работать видимо некогда, да? А то бы почаще смотрел исходники.

Короче говоря, у тебя по существу что-нибудь имеется в запасе, кроме пустого потока слов? Если есть, выкладывай. Если нет, то мне поработать надо.

auf Wiedersehen, бамбино.

anonymous
()

Тупой онанизмус понимает, как он лажанулся со своим Java-примером:

class Test2 
{
   public static void main(String[] args)
   {
	   String ttt;
	   
     long ss = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     long zz = System.currentTimeMillis();
     
     System.out.println(zz-ss);

     long ss1 = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> <input type=\"text\"  size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     long zz1 = System.currentTimeMillis();
     
     System.out.println(zz1-ss1);
  
     long ss2 = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> <input type=\"text\"  size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     long zz2 = System.currentTimeMillis();
     
     System.out.println(zz2-ss2);
   }
}

gcj --main==Test2 Test2.java
./a.out

Результат:

======

26943
27345
26520

======


NikS.

anonymous
()

Кому инетересно, вот такой код в C# на той же машине работает ~3867 millseconds

using System; 

class HelloWorld 
{ 
     static void Main() 
     { 
	     String ttt;
	     
	     
	     long xx = DateTime.Now.Ticks;
	     
	     for(long i = 0; i < 1000000; i++)
	       ttt = "<b>Field" + i + "</b> " +
		  "<input type=\"text\""+
		  " size=\"20\" name=\"Field" + i + 
		  "\" value=\"Value" + i + "\"><br>";
	     
	     long yy = DateTime.Now.Ticks;
     
	     double zz = TimeSpan.FromTicks(yy).TotalMilliseconds - TimeSpan.FromTicks(xx).TotalMilliseconds;
	     
	     Console.WriteLine(zz);
     }
}

Примерно в 2.5 раза быстрее аналогичного на яве +- погрешности взятия времени. (имхо, на яве время берется быстрей чем на C# из-за создания объекта в C#)

anonymous
()

Тупой никс не понимает, как он лажанулся со своим примером

Результаты у меня: 10090 9028 9017

c:\j2sdk1.4.1_01\bin\javac.exe Test3.java java Test3

Ты еще на ассемблере напиши, ок? И я не понял, gcj уже СЕРТИФИЦИРОВАН Сан? Ссылочку пожалуйста. Источники кроме java.sun.com (не форумы, а официальная часть) не принимаются.

anonymous
()

И нефиг было мышкой двигать. А то знаю я, какой там перфоманс у кде/gnome. Процессор из последних сил напрягается, чтобы кнопочку отрисовать

anonymous
()
Ответ на: комментарий от anonymous

Придурь,

1. Выучите загрузку классов в Java (по Гослингу), чтобы я опять Вас
физиономией об цифры не опускал:

еще раз строим первый "типа неправильный" цикл после первого и
 получаем:

26181
25977
25975
25736

Комментарии нужны?

2. Выучите все типы JDK всех производителей, чтобы не смотреться 
полным кретином.

NikS.

PS Имя назовите.

anonymous
()

>> Процессор из последних сил напрягается, чтобы кнопочку отрисовать

Я не пойму - полный виндузячий идиот или придуриватся? У меня _консоль_!

NikS.

anonymous
()

да нужны.

class Test3 { public static void main(String[] args) { String ttt; System.out.println("stage 1"); long ss = System.currentTimeMillis(); for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> " + "<input type=\"text\""+ " size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; long zz = System.currentTimeMillis(); System.out.println(zz-ss);

System.out.println("stage 2"); ss = System.currentTimeMillis(); for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> " + "<input type=\"text\""+ " size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; zz = System.currentTimeMillis(); System.out.println(zz-ss); System.out.println("stage 3"); ss = System.currentTimeMillis(); for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> " + "<input type=\"text\""+ " size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; zz = System.currentTimeMillis(); System.out.println(zz-ss); System.out.println("stage a.1"); long ss1 = System.currentTimeMillis(); for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> <input type=\"text\" size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; long zz1 = System.currentTimeMillis(); System.out.println(zz1-ss1);

System.out.println("stage a.2"); ss1 = System.currentTimeMillis(); for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> <input type=\"text\" size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; zz1 = System.currentTimeMillis(); System.out.println(zz1-ss1);

System.out.println("stage a.3"); ss1 = System.currentTimeMillis(); for(long i = 0; i < 1000000; i++) ttt = "<b>Field" + i + "</b> <input type=\"text\" size=\"20\" name=\"Field" + i + "\" value=\"Value" + i + "\"><br>"; zz1 = System.currentTimeMillis(); System.out.println(zz1-ss1); } }

java Test3 - 1.4.1_01 stage 1 10291 stage 2 10270 stage 3 10180 stage a.1 9109 stage a.2 9098 stage a.3 9108

Sun, blackdown, ibm, какая-то поделка по имени gcj. Я использую Sun.

anonymous
()

да нужны.

class Test3
{
   public static void main(String[] args)
   {
	   String ttt;
	   
	   System.out.println("stage 1");
     long ss = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     long zz = System.currentTimeMillis();
     
     System.out.println(zz-ss);

     System.out.println("stage 2");
     ss = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     zz = System.currentTimeMillis();
     System.out.println(zz-ss);
     
     System.out.println("stage 3");
     ss = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> " +
          "<input type=\"text\""+
          " size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     zz = System.currentTimeMillis();
     System.out.println(zz-ss);
     
     System.out.println("stage a.1");     
     long ss1 = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> <input type=\"text\"  size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     long zz1 = System.currentTimeMillis();
     
     System.out.println(zz1-ss1);

     System.out.println("stage a.2");     
     ss1 = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> <input type=\"text\"  size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     zz1 = System.currentTimeMillis();
     
     System.out.println(zz1-ss1);

     System.out.println("stage a.3");     
     ss1 = System.currentTimeMillis();
     for(long i = 0; i < 1000000; i++)
       ttt = "<b>Field" + i + "</b> <input type=\"text\"  size=\"20\" name=\"Field" + i + 
          "\" value=\"Value" + i + "\"><br>";
     
     zz1 = System.currentTimeMillis();
     
     System.out.println(zz1-ss1);
     }
}


java Test3 - 1.4.1_01
stage 1
10291
stage 2
10270
stage 3
10180
stage a.1
9109
stage a.2
9098
stage a.3
9108

Sun, blackdown, ibm, какая-то поделка по имени gcj. Я использую Sun. 

anonymous
()

У меня Sun J2SE 1.4.1_01, Win2k SP3 Pentium 1.4

anonymous
()
Ответ на: комментарий от anonymous

>> Я не пойму - полный виндузячий идиот или придуриватся? У меня _консоль_!

А сюда ответы тоже из консоли пишешь?

anonymous
()

>> Я использую Sun

1. Использовать надо IBM, который в 4 раза быстрее.

2. Третий раз не повторяю - учить загрузку классов. Приведите вывод javap -c примера.

NikS

anonymous
()

>> А сюда ответы тоже из консоли пишешь?

Ну и чмо! Даже полная мразь должна знать про lynx.

NikS

anonymous
()
Ответ на: комментарий от anonymous

>> Ну и чмо! Даже полная мразь должна знать про lynx

Вау. Как ты круто про себя-то... Достойно. Достойно.

А ibm jdk я пользовать не буду по той причине, что там есть несовместимости. Конкретно, в версии 1.3.1 было отличие от сановской в реализации бинов. Из-за чего код стороннего разработчика (библиотека) падал. 1.4.1 проверять неохота.

И причем тут загружка классов? Посмотри последний пример. Тесты повторяются по 3 раза. Я что-то делаю не правильно?

anonymous
()

Method void main(java.lang.String[]) 0 invokestatic #2 <Method long currentTimeMillis()> 3 lstore_2 4 lconst_0 5 lstore 4 7 goto 72 10 new #3 <Class java.lang.StringBuffer> 13 dup 14 invokespecial #4 <Method java.lang.StringBuffer()> 17 ldc #5 <String "<b>Field"> 19 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 22 lload 4 24 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 27 ldc #8 <String "</b> "> 29 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 32 ldc #9 <String "<input type="text""> 34 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 37 ldc #10 <String " size="20" name="Field"> 39 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 42 lload 4 44 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 47 ldc #11 <String "" value="Value"> 49 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 52 lload 4 54 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 57 ldc #12 <String ""><br>"> 59 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 62 invokevirtual #13 <Method java.lang.String toString()> 65 astore_1 66 lload 4 68 lconst_1 69 ladd 70 lstore 4 72 lload 4 74 ldc2_w #14 <Long 1000000> 77 lcmp 78 iflt 10 81 invokestatic #2 <Method long currentTimeMillis()> 84 lstore 6 86 getstatic #16 <Field java.io.PrintStream out> 89 lload 6 91 lload_2 92 lsub 93 invokevirtual #17 <Method void println(long)> 96 invokestatic #2 <Method long currentTimeMillis()> 99 lstore 8 101 lconst_0 102 lstore 10 104 goto 159 107 new #3 <Class java.lang.StringBuffer> 110 dup 111 invokespecial #4 <Method java.lang.StringBuffer()> 114 ldc #5 <String "<b>Field"> 116 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 119 lload 10 121 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 124 ldc #18 <String "</b> <input type="text" size="20" name="Field"> 126 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 129 lload 10 131 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 134 ldc #11 <String "" value="Value"> 136 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 139 lload 10 141 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 144 ldc #12 <String ""><br>"> 146 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 149 invokevirtual #13 <Method java.lang.String toString()> 152 astore_1 153 lload 10 155 lconst_1 156 ladd 157 lstore 10 159 lload 10 161 ldc2_w #14 <Long 1000000> 164 lcmp 165 iflt 107 168 invokestatic #2 <Method long currentTimeMillis()> 171 lstore 12 173 getstatic #16 <Field java.io.PrintStream out> 176 lload 12 178 lload 8 180 lsub 181 invokevirtual #17 <Method void println(long)> 184 invokestatic #2 <Method long currentTimeMillis()> 187 lstore 14 189 lconst_0 190 lstore 16 192 goto 247 195 new #3 <Class java.lang.StringBuffer> 198 dup 199 invokespecial #4 <Method java.lang.StringBuffer()> 202 ldc #5 <String "<b>Field"> 204 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 207 lload 16 209 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 212 ldc #18 <String "</b> <input type="text" size="20" name="Field"> 214 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 217 lload 16 219 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 222 ldc #11 <String "" value="Value"> 224 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 227 lload 16 229 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 232 ldc #12 <String ""><br>"> 234 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 237 invokevirtual #13 <Method java.lang.String toString()> 240 astore_1 241 lload 16 243 lconst_1 244 ladd 245 lstore 16 247 lload 16 249 ldc2_w #14 <Long 1000000> 252 lcmp 253 iflt 195 256 invokestatic #2 <Method long currentTimeMillis()> 259 lstore 18 261 getstatic #16 <Field java.io.PrintStream out> 264 lload 18 266 lload 14 268 lsub 269 invokevirtual #17 <Method void println(long)> 272 return

Это твой пример.

anonymous
()

Method void main(java.lang.String[]) 0 invokestatic #2 <Method long currentTimeMillis()> 3 lstore_2 4 lconst_0 5 lstore 4 7 goto 72 10 new #3 <Class java.lang.StringBuffer> 13 dup 14 invokespecial #4 <Method java.lang.StringBuffer()> 17 ldc #5 <String "<b>Field"> 19 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 22 lload 4 24 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 27 ldc #8 <String "</b> "> 29 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 32 ldc #9 <String "<input type="text""> 34 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 37 ldc #10 <String " size="20" name="Field"> 39 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 42 lload 4 44 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 47 ldc #11 <String "" value="Value"> 49 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 52 lload 4 54 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 57 ldc #12 <String ""><br>"> 59 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 62 invokevirtual #13 <Method java.lang.String toString()> 65 astore_1 66 lload 4 68 lconst_1 69 ladd 70 lstore 4 72 lload 4 74 ldc2_w #14 <Long 1000000> 77 lcmp 78 iflt 10 81 invokestatic #2 <Method long currentTimeMillis()> 84 lstore 6 86 getstatic #16 <Field java.io.PrintStream out> 89 lload 6 91 lload_2 92 lsub 93 invokevirtual #17 <Method void println(long)> 96 invokestatic #2 <Method long currentTimeMillis()> 99 lstore 8 101 lconst_0 102 lstore 10 104 goto 159 107 new #3 <Class java.lang.StringBuffer> 110 dup 111 invokespecial #4 <Method java.lang.StringBuffer()> 114 ldc #5 <String "<b>Field"> 116 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 119 lload 10 121 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 124 ldc #18 <String "</b> <input type="text" size="20" name="Field"> 126 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 129 lload 10 131 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 134 ldc #11 <String "" value="Value"> 136 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 139 lload 10 141 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 144 ldc #12 <String ""><br>"> 146 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 149 invokevirtual #13 <Method java.lang.String toString()> 152 astore_1 153 lload 10 155 lconst_1 156 ladd 157 lstore 10 159 lload 10 161 ldc2_w #14 <Long 1000000> 164 lcmp 165 iflt 107 168 invokestatic #2 <Method long currentTimeMillis()> 171 lstore 12 173 getstatic #16 <Field java.io.PrintStream out> 176 lload 12 178 lload 8 180 lsub 181 invokevirtual #17 <Method void println(long)> 184 invokestatic #2 <Method long currentTimeMillis()> 187 lstore 14 189 lconst_0 190 lstore 16 192 goto 247 195 new #3 <Class java.lang.StringBuffer> 198 dup 199 invokespecial #4 <Method java.lang.StringBuffer()> 202 ldc #5 <String "<b>Field"> 204 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 207 lload 16 209 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 212 ldc #18 <String "</b> <input type="text" size="20" name="Field"> 214 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 217 lload 16 219 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 222 ldc #11 <String "" value="Value"> 224 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 227 lload 16 229 invokevirtual #7 <Method java.lang.StringBuffer append(long)> 232 ldc #12 <String ""><br>"> 234 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 237 invokevirtual #13 <Method java.lang.String toString()> 240 astore_1 241 lload 16 243 lconst_1 244 ladd 245 lstore 16 247 lload 16 249 ldc2_w #14 <Long 1000000> 252 lcmp 253 iflt 195 256 invokestatic #2 <Method long currentTimeMillis()> 259 lstore 18 261 getstatic #16 <Field java.io.PrintStream out> 264 lload 18 266 lload 14 268 lsub 269 invokevirtual #17 <Method void println(long)> 272 return

Это твой пример.

anonymous
()

уупс. ПРОШУ ПРОЩЕНИЯ у уважаемой аудитории. Я не нарошно.

Method void main(java.lang.String[])
   0 invokestatic #2 <Method long currentTimeMillis()>
   3 lstore_2
   4 lconst_0
   5 lstore 4
   7 goto 72
  10 new #3 <Class java.lang.StringBuffer>
  13 dup
  14 invokespecial #4 <Method java.lang.StringBuffer()>
  17 ldc #5 <String "<b>Field">
  19 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  22 lload 4
  24 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
  27 ldc #8 <String "</b> ">
  29 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  32 ldc #9 <String "<input type="text"">
  34 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  37 ldc #10 <String " size="20" name="Field">
  39 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  42 lload 4
  44 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
  47 ldc #11 <String "" value="Value">
  49 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  52 lload 4
  54 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
  57 ldc #12 <String ""><br>">
  59 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
  62 invokevirtual #13 <Method java.lang.String toString()>
  65 astore_1
  66 lload 4
  68 lconst_1
  69 ladd
  70 lstore 4
  72 lload 4
  74 ldc2_w #14 <Long 1000000>
  77 lcmp
  78 iflt 10
  81 invokestatic #2 <Method long currentTimeMillis()>
  84 lstore 6
  86 getstatic #16 <Field java.io.PrintStream out>
  89 lload 6
  91 lload_2
  92 lsub
  93 invokevirtual #17 <Method void println(long)>
  96 invokestatic #2 <Method long currentTimeMillis()>
  99 lstore 8
 101 lconst_0
 102 lstore 10
 104 goto 159
 107 new #3 <Class java.lang.StringBuffer>
 110 dup
 111 invokespecial #4 <Method java.lang.StringBuffer()>
 114 ldc #5 <String "<b>Field">
 116 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 119 lload 10
 121 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
 124 ldc #18 <String "</b> <input type="text"  size="20" name="Field">
 126 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 129 lload 10
 131 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
 134 ldc #11 <String "" value="Value">
 136 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 139 lload 10
 141 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
 144 ldc #12 <String ""><br>">
 146 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 149 invokevirtual #13 <Method java.lang.String toString()>
 152 astore_1
 153 lload 10
 155 lconst_1
 156 ladd
 157 lstore 10
 159 lload 10
 161 ldc2_w #14 <Long 1000000>
 164 lcmp
 165 iflt 107
 168 invokestatic #2 <Method long currentTimeMillis()>
 171 lstore 12
 173 getstatic #16 <Field java.io.PrintStream out>
 176 lload 12
 178 lload 8
 180 lsub
 181 invokevirtual #17 <Method void println(long)>
 184 invokestatic #2 <Method long currentTimeMillis()>
 187 lstore 14
 189 lconst_0
 190 lstore 16
 192 goto 247
 195 new #3 <Class java.lang.StringBuffer>
 198 dup
 199 invokespecial #4 <Method java.lang.StringBuffer()>
 202 ldc #5 <String "<b>Field">
 204 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 207 lload 16
 209 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
 212 ldc #18 <String "</b> <input type="text"  size="20" name="Field">
 214 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 217 lload 16
 219 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
 222 ldc #11 <String "" value="Value">
 224 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 227 lload 16
 229 invokevirtual #7 <Method java.lang.StringBuffer append(long)>
 232 ldc #12 <String ""><br>">
 234 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)>
 237 invokevirtual #13 <Method java.lang.String toString()>
 240 astore_1
 241 lload 16
 243 lconst_1
 244 ladd
 245 lstore 16
 247 lload 16
 249 ldc2_w #14 <Long 1000000>
 252 lcmp
 253 iflt 195
 256 invokestatic #2 <Method long currentTimeMillis()>
 259 lstore 18
 261 getstatic #16 <Field java.io.PrintStream out>
 264 lload 18
 266 lload 14
 268 lsub
 269 invokevirtual #17 <Method void println(long)>
 272 return

anonymous
()
Ответ на: комментарий от anonymous

>> Достойно.

Абсолютно верно для того, кто так облажался с lynx!

>> не правильно?

javap -h Test2 в студию, pls.

NikS.

anonymous
()

Ты мне про линкс не гони. Знаю я, что это такое - это средство порыться в вебе, когда не стартует оболочка. Чтобы патчи поискать или конфу посмотреть.

D:\0>c:\j2sdk1.4.1_01\bin\javap.exe -h Test3 (это тот, который по 3 раза)
-h is no longer available - use the 'javah' program

D:\0>c:\j2sdk1.4.1_01\bin\javah.exe  Test3

Test3.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Test3 */

#ifndef _Included_Test3
#define _Included_Test3
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif

anonymous
()

У меня под IBM JDK 9986 9986. (Pentium III 800EB) Почему примерно одинаково - это онанизмус решит сам. Я уже ему подсказку дал.

Я веселюсь над вындовуз-онанизмусом, ляпнувшим про отсутствие JIT компиляторов (судя по стилю - это он). Он все хочет доказать, что M$ C#.NET - это круууто.

Так что в читалку, читать про то что такое JIT.

NikS.

anonymous
()
Ответ на: комментарий от anonymous

to anonymous (*) (2003-01-16 15:43:11.569) :

>Ну вы млять и идиоты.... трейд о чём идёт? Долбанутые....

Кышь... Не видишь, народ честно догоняет количество до 600 ;)

MrBool
()

2Niks:

Про JIT это был не я. А всю 12 страницу и кучу предыдущих - я.

Кста, без JIT результаты

D:\0>java -Djava.compiler=NONE Test3 stage 1 38807 stage a.1 34078 stage 2 38937 stage a.2 33988 stage 3 38847 stage a.3 34038

anonymous
()
Ответ на: комментарий от anonymous

>> Почему примерно одинаково - это онанизмус решит сам

Как пишут, 8-О. Одинаковы? в 2.5 раза - это одинаково. Блин, все же не поленюсь, скачаю сейчас IBM JDK. Чтобы на одной машинке проверить

anonymous
()

Онанизмус не врубается, (хоть я ему сегодня ето с утра толкую) что даже в int i = 1; String ttt = ""; ttt = "A" + i + "B"; компайлер будет честно создавать стрингбуффер аппенды, если только это i не объявлено как final. (Онанизмус думал что static, но это он неправильно думал!;-))) Хотя если онанизмус пасал форму с 10 миллионами полей, то я его уважаю;-))

Вопрос онанизмусу, как великому специалисту по JIT: че такое т.н. "нарушаемая" переменная? зачем ее Гослинг выдумал?

>> количество до 600 ;)

Не, "666" - Луговского надо порадовать! ;-)

NikS.

anonymous
()

Я не врубаюсь, нах тебе финальные инты если ты их все равно в строки добавляешь. И перестань из себя дурня строить. Все время прыгаешь с одной темы на другую. Задолбал. Иди лучше какому-то луговскому пожалуйся, что тебя тут обижает. Погладит по голове, слезы вытрет. Глядишь, и полегчает

anonymous
()

>> Жаль, под винду максимум 1.3.1 IBM отвалил

Это мастдай недорос до уровня благосклонности IBM.

NikS.

anonymous
()

Os/2 недоросла?

anonymous
()

2иск,

ты согласен с тем, что
"aaa" + i + "asdasd" + "asdasdasd" медленнее чем
append("aaa").append(i).append("asdasd").append("asdasd
asd")?

anonymous
()

>> тебе финальные инты если ты их все равно в строки добавляешь

Во-первых. я не люблю разговаривать с анонимусами.

Во-вторых, согласитесь ли Вы, что все компайлеры (SUN, IBM, BEA & etc.) должны производить _единый_ стандартный промежуточный код? Если так, то согласитесь ли Вы, что каждый производитель будет стремиться улучшать свой JIT компайлер, держа свои приемы в тайне от конкурентов?

>> какому-то луговскому

В-третьих, я уважаю людей, которые открыто и весело в форумах оппонируют всяким кульхацкерам, торсионщикам & etc. братии.

NikS.

anonymous
()

2niks

> Во-вторых, согласитесь ли Вы, что все компайлеры (SUN, IBM, BEA & etc.) должны производить _единый_ стандартный промежуточный код? Если так, то согласитесь ли Вы, что каждый производитель будет стремиться улучшать свой JIT компайлер, держа свои приемы в тайне от конкурентов?

С этим согласен целиком и полностью

anonymous
()

Хотя, нужно посмотреть сановские рекомендации...

Да, я таки зарегистрировался

Pugilist
()

>> ты согласен с тем, что

Вопрос вида: "Мы видим "Феррари". Вы согласны с тем, что все машины быстро ездят?" Вам уже объяснили, что java - это НЕ ИНТЕРПРЕТАТОР. JIT - это проблема производителя. Другое дело, что IBM имея многолетний Smalltalk, опыт делает это лучше других.

>> Os/2

Ну и клоун! Гордон Летвин в ИБМ работал или в Мелкософт? В читалку - читать "Inside OS/2" G.Letwin с предисловием B.Gates! IBM - это AIX, z/OS. z/VM, OS/400.

(Кстати, следующий раз не лажайтесь со зданием IBM на "Новой Площади" - там одни клерки-сейлзы. Технари сидят в другом месте.)

NikS.

anonymous
()

Так, переформулируем вопрос.

2иск,

ты согласен с тем, что "aaa" + i + "asdasd" + "asdasdasd" медленнее чем append("aaa").append(i).append("asdasd").append("asdasd asd"),

если все это работает под сановской явой с сановским JIT, и, к тому же, скомпилировано сановским компилятором.

Pugilist
()

вот еще, кстати, результаты работы под JDK 1.4.0 Bealogic (нашелся у меня на машине)

D:\0>c:\JRockit\7.0\1.4.0\bin\java.exe Test3
stage 1
7548
stage a.1
6793
stage 2
7405
stage a.2
6793
stage 3
7395
stage a.3
6944

После чего я получил GPF :). 

Pugilist
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.