LINUX.ORG.RU

Техническая статья Sun «Делаем Java быстрее чем С, используя LRWP»

 , , , , ,


0

0

Начав с технического решения на основе веб-сервера Xitami, имеющего некоторые проблемы с Соларисом (Running a copy in each zone improved performance by more than 100% but still was not the solution to the scalability problem with Xitami), группа инженеров, используя Java и технологию LRWP, добилась производительности на 78% большей, чем у системы на основе Xitami. Xitami назван в статье одним из top10 веб-серверов (one of the top 10 web servers). По отчету Netcraft ( http://survey.netcraft.com/Reports/20... ), на момент написания статьи Xitami имел долю в 0.006% от доли веб-сервера Apache, если считать по количеству сайтов.

>>> Making Java Technology Faster Than C with LRWP

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

> Дружно хороним Java и выбираем Mac. Вы думаете я зря после 3 лет с Линуксом выбрал Мак ОС Х?

А в следующей версии 10.6 системой через OpenCL будет задействован чип видео-платы для вычислений. Тогда вообще бросай гранату.

anonymous
()

ну если не ерничать, то все сильно не просто[как всегда] в этом смысле. проблема производительности - не главная и не самая трудноустранивая из тех что есть у Java. главные, однако - являются ее квинтесенциями. увы и ах.

p.s. см паралели с тем-же шведским язвком программирования.

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

00000000  ce fa ed fe 07 00 00 00  03 00 00 00 02 00 00 00  |????............|
00000010  0b 00 00 00 a8 03 00 00  85 00 00 00 01 00 00 00  |....?...........|
00000020  38 00 00 00 5f 5f 50 41  47 45 5a 45 52 4f 00 00  |8...__PAGEZERO..|
00000030  00 00 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000050  00 00 00 00 01 00 00 00  c0 00 00 00 5f 5f 54 45  |........?...__TE|
00000060  58 54 00 00 00 00 00 00  00 00 00 00 00 10 00 00  |XT..............|
00000070  00 10 00 00 00 00 00 00  00 10 00 00 07 00 00 00  |................|
00000080  05 00 00 00 02 00 00 00  00 00 00 00 5f 5f 74 65  |............__te|
00000090  78 74 00 00 00 00 00 00  00 00 00 00 5f 5f 54 45  |xt..........__TE|
000000a0  58 54 00 00 00 00 00 00  00 00 00 00 40 1d 00 00  |XT..........@...|
000000b0  aa 02 00 00 40 0d 00 00  04 00 00 00 00 00 00 00  |?...@...........|
000000c0  00 00 00 00 00 04 00 80  00 00 00 00 00 00 00 00  |................|
000000d0  5f 5f 63 73 74 72 69 6e  67 00 00 00 00 00 00 00  |__cstring.......|
000000e0  5f 5f 54 45 58 54 00 00  00 00 00 00 00 00 00 00  |__TEXT..........|
000000f0  ea 1f 00 00 0d 00 00 00  ea 0f 00 00 00 00 00 00  |?.......?.......|
00000100  00 00 00 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
00000110  00 00 00 00 01 00 00 00  c0 00 00 00 5f 5f 44 41  |........?...__DA|
00000120  54 41 00 00 00 00 00 00  00 00 00 00 00 20 00 00  |TA........... ..|
00000130  00 10 00 00 00 10 00 00  00 10 00 00 07 00 00 00  |................|
00000140  03 00 00 00 02 00 00 00  00 00 00 00 5f 5f 64 61  |............__da|
00000150  74 61 00 00 00 00 00 00  00 00 00 00 5f 5f 44 41  |ta..........__DA|
00000160  54 41 00 00 00 00 00 00  00 00 00 00 00 20 00 00  |TA........... ..|
00000170  14 00 00 00 00 10 00 00  02 00 00 00 00 00 00 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  5f 5f 64 79 6c 64 00 00  00 00 00 00 00 00 00 00  |__dyld..........|
000001a0  5f 5f 44 41 54 41 00 00  00 00 00 00 00 00 00 00  |__DATA..........|
000001b0  14 20 00 00 1c 00 00 00  14 10 00 00 02 00 00 00  |. ..............|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 01 00 00 00  7c 00 00 00 5f 5f 49 4d  |........|...__IM|
000001e0  50 4f 52 54 00 00 00 00  00 00 00 00 00 30 00 00  |PORT.........0..|
000001f0  00 10 00 00 00 20 00 00  00 10 00 00 07 00 00 00  |..... ..........|
00000200  07 00 00 00 01 00 00 00  00 00 00 00 5f 5f 6a 75  |............__ju|
00000210  6d 70 5f 74 61 62 6c 65  00 00 00 00 5f 5f 49 4d  |mp_table....__IM|
00000220  50 4f 52 54 00 00 00 00  00 00 00 00 00 30 00 00  |PORT.........0..|
00000230  14 00 00 00 00 20 00 00  06 00 00 00 00 00 00 00  |..... ..........|
00000240  00 00 00 00 08 00 00 04  00 00 00 00 05 00 00 00  |................|
00000250  01 00 00 00 38 00 00 00  5f 5f 4c 49 4e 4b 45 44  |....8...__LINKED|
00000260  49 54 00 00 00 00 00 00  00 40 00 00 00 10 00 00  |IT.......@......|
00000270  00 30 00 00 6c 01 00 00  07 00 00 00 01 00 00 00  |.0..l...........|
00000280  00 00 00 00 00 00 00 00  02 00 00 00 18 00 00 00  |................|
00000290  00 30 00 00 0f 00 00 00  c4 30 00 00 a8 00 00 00  |.0......?0..?...|
000002a0  0b 00 00 00 50 00 00 00  00 00 00 00 03 00 00 00  |....P...........|
000002b0  03 00 00 00 08 00 00 00  0b 00 00 00 04 00 00 00  |................|
000002c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000002d0  00 00 00 00 00 00 00 00  b4 30 00 00 04 00 00 00  |........?0......|
000002e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000002f0  0e 00 00 00 1c 00 00 00  0c 00 00 00 2f 75 73 72  |............/usr|
00000300  2f 6c 69 62 2f 64 79 6c  64 00 00 00 05 00 00 00  |/lib/dyld.......|
00000310  50 00 00 00 01 00 00 00  10 00 00 00 00 00 00 00  |P...............|
00000320  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

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

00000340  00 00 00 00 40 1d 00 00  00 00 00 00 00 00 00 00  |....@...........|
00000350  00 00 00 00 00 00 00 00  00 00 00 00 0c 00 00 00  |................|
00000360  34 00 00 00 18 00 00 00  02 00 00 00 00 00 01 00  |4...............|
00000370  00 00 01 00 2f 75 73 72  2f 6c 69 62 2f 6c 69 62  |..../usr/lib/lib|
00000380  67 63 63 5f 73 2e 31 2e  64 79 6c 69 62 00 00 00  |gcc_s.1.dylib...|
00000390  0c 00 00 00 34 00 00 00  18 00 00 00 02 00 00 00  |....4...........|
000003a0  01 01 6f 00 00 00 01 00  2f 75 73 72 2f 6c 69 62  |..o...../usr/lib|
000003b0  2f 6c 69 62 53 79 73 74  65 6d 2e 42 2e 64 79 6c  |/libSystem.B.dyl|
000003c0  69 62 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |ib..............|
000003d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

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

00000d40 6a 00 89 e5 83 e4 f0 83 ec 10 8b 5d 04 89 5c 24 |j..?.??.?..]..\$| 00000d50 00 8d 4d 08 89 4c 24 04 83 c3 01 c1 e3 02 01 cb |..M..L$..?.??..?| 00000d60 89 5c 24 08 8b 03 83 c3 04 85 c0 75 f7 89 5c 24 |.\$....?..?u?.\$| 00000d70 0c e8 aa 01 00 00 89 44 24 00 e8 8b 12 00 00 f4 |.?....D$.?....?| 00000d80 e8 00 00 00 00 58 ff b0 8b 02 00 00 8b 80 8f 02 |?....X??........| 00000d90 00 00 ff e0 e8 00 00 00 00 58 8b 80 7f 02 00 00 |..???....X......| 00000da0 ff e0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 |??..............| 00000db0 55 89 e5 57 56 83 ec 10 8b 75 08 8b 45 0c 85 f6 |U.?WV.?..u..E..?| 00000dc0 74 2e 0f 1f 80 00 00 00 00 0f 1f 80 00 00 00 00 |t...............| 00000dd0 85 c0 75 24 89 f0 48 74 56 83 ee 02 c7 44 24 04 |.?u$.?HtV.?.?D$.| 00000de0 00 00 00 00 89 04 24 e8 c4 ff ff ff 85 f6 75 e0 |......$?????.?u?| 00000df0 40 83 c4 10 5e 5f c9 c3 83 f8 01 0f 84 a6 00 00 |@.?.^_??.?...?..| 00000e00 00 83 f8 02 0f 84 88 00 00 00 83 e8 03 89 44 24 |..?........?..D$| 00000e10 04 8d 7e ff 89 34 24 e8 94 ff ff ff 89 3c 24 89 |..~?.4$?.???.<$.| 00000e20 44 24 04 e8 88 ff ff ff 85 ff 75 0a 40 eb c1 b8 |D$.?.???.?u.@???| 00000e30 02 00 00 00 eb bb 85 c0 75 3a 8d 46 fe c7 44 24 |....?.?u:.F??D$| 00000e40 04 01 00 00 00 89 04 24 e8 63 ff ff ff 85 ff 74 |.......$?c???.?t| 00000e50 9f 85 c0 75 67 89 f0 83 e8 02 74 d3 c7 44 24 04 |..?ug.?.?.t??D$.| 00000e60 00 00 00 00 83 ee 03 89 04 24 e8 41 ff ff ff e9 |.....?...$?A????| 00000e70 4a ff ff ff 48 89 44 24 04 89 3c 24 e8 2f ff ff |J???H.D$..<$?/??| 00000e80 ff 89 44 24 04 8d 46 fe 89 04 24 e8 20 ff ff ff |?.D$..F?..$? ???| 00000e90 eb bb 8d 7e ff c7 44 24 04 01 00 00 00 89 3c 24 |?.~??D$......<$| 00000ea0 e8 0b ff ff ff eb 81 8d 7e ff c7 44 24 04 01 00 |?.????..~??D$...| 00000eb0 00 00 89 3c 24 e8 f6 fe ff ff eb 91 83 f8 01 74 |...<$??????..?.t| 00000ec0 34 83 e8 02 89 3c 24 8d 7e fe 89 44 24 04 e8 dd |4.?..<$.~?.D$.??| 00000ed0 fe ff ff 89 3c 24 89 44 24 04 e8 d1 fe ff ff 85 |???.<$.D$.?????.| 00000ee0 ff 0f 84 09 ff ff ff 85 c0 75 1f 83 ee 03 b0 01 |?...???.?u..?.?.| 00000ef0 e9 c9 fe ff ff 8d 7e fe c7 44 24 04 01 00 00 00 |?????.~??D$.....| 00000f00 89 3c 24 e8 a8 fe ff ff eb d5 48 83 ee 03 89 44 |.<$??????H.?..D| 00000f10 24 04 89 3c 24 e8 96 fe ff ff e9 9f fe ff ff 90 |$..<$?.????.???.| 00000f20 55 89 e5 83 ec 38 89 75 f8 8b 75 0c 89 5d f4 e8 |U.?.?8.u?.u..]??| 00000f30 00 00 00 00 5b 89 7d fc 8b 46 04 89 04 24 e8 bd |....[.}?.F...$?| 00000f40 10 00 00 89 c7 8b 46 08 89 04 24 e8 b0 10 00 00 |....?.F...$?...| 00000f50 89 c6 e8 ae 10 00 00 85 ff 89 45 e4 75 42 8d 7e |.??....?.E?uB.~| 00000f60 01 e8 9f 10 00 00 89 7c 24 04 89 c6 8d 83 b6 00 |.?.....|$..?..?.| 00000f70 00 00 89 04 24 e8 95 10 00 00 8d 83 be 00 00 00 |....$?......?...| 00000f80 2b 75 e4 89 04 24 89 74 24 04 e8 80 10 00 00 8b |+u?..$.t$.?.....| 00000f90 5d f4 31 c0 8b 75 f8 8b 7d fc c9 c3 0f 1f 40 00 |]?1?.u?.}???..@.| 00000fa0 85 f6 74 2c 8d 46 ff 89 3c 24 89 44 24 04 e8 fd |.?t,.F?.<$.D$.??| 00000fb0 fd ff ff 89 44 24 04 8d 47 ff 89 04 24 e8 ee fd |???.D$..G?..$???| 00000fc0 ff ff 89 c7 eb 9b 66 2e 0f 1f 84 00 00 00 00 00 |??.??.f.........| 00000fd0 8d 47 ff c7 44 24 04 01 00 00 00 89 04 24 e8 cd |.G??D$.......$??| 00000fe0 fd ff ff 89 c7 e9 77 ff ff ff 6c 20 3d 20 25 64 |???.??w???l = %d| 00000ff0 0a 00 25 6c 64 0a 00 00 00 00 00 00 00 00 00 00 |..%ld...........| 00001000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00001010 00 10 00 00 00 10 e0 8f 08 10 e0 8f 00 10 00 00 |......?...?.....| 00001020 0c 20 00 00 08 20 00 00 04 20 00 00 00 20 00 00 |. ... ... ... ..| 00001030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| *

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

00000d40  6a 00 89 e5 83 e4 f0 83  ec 10 8b 5d 04 89 5c 24  |j..?.??.?..]..\$|
00000d50  00 8d 4d 08 89 4c 24 04  83 c3 01 c1 e3 02 01 cb  |..M..L$..?.??..?|
00000d60  89 5c 24 08 8b 03 83 c3  04 85 c0 75 f7 89 5c 24  |.\$....?..?u?.\$|
00000d70  0c e8 aa 01 00 00 89 44  24 00 e8 8b 12 00 00 f4  |.?....D$.?....?|
00000d80  e8 00 00 00 00 58 ff b0  8b 02 00 00 8b 80 8f 02  |?....X??........|
00000d90  00 00 ff e0 e8 00 00 00  00 58 8b 80 7f 02 00 00  |..???....X......|
00000da0  ff e0 90 90 90 90 90 90  90 90 90 90 90 90 90 90  |??..............|
00000db0  55 89 e5 57 56 83 ec 10  8b 75 08 8b 45 0c 85 f6  |U.?WV.?..u..E..?|
00000dc0  74 2e 0f 1f 80 00 00 00  00 0f 1f 80 00 00 00 00  |t...............|
00000dd0  85 c0 75 24 89 f0 48 74  56 83 ee 02 c7 44 24 04  |.?u$.?HtV.?.?D$.|
00000de0  00 00 00 00 89 04 24 e8  c4 ff ff ff 85 f6 75 e0  |......$?????.?u?|
00000df0  40 83 c4 10 5e 5f c9 c3  83 f8 01 0f 84 a6 00 00  |@.?.^_??.?...?..|
00000e00  00 83 f8 02 0f 84 88 00  00 00 83 e8 03 89 44 24  |..?........?..D$|
00000e10  04 8d 7e ff 89 34 24 e8  94 ff ff ff 89 3c 24 89  |..~?.4$?.???.<$.|
00000e20  44 24 04 e8 88 ff ff ff  85 ff 75 0a 40 eb c1 b8  |D$.?.???.?u.@???|
00000e30  02 00 00 00 eb bb 85 c0  75 3a 8d 46 fe c7 44 24  |....?.?u:.F??D$|
00000e40  04 01 00 00 00 89 04 24  e8 63 ff ff ff 85 ff 74  |.......$?c???.?t|
00000e50  9f 85 c0 75 67 89 f0 83  e8 02 74 d3 c7 44 24 04  |..?ug.?.?.t??D$.|
00000e60  00 00 00 00 83 ee 03 89  04 24 e8 41 ff ff ff e9  |.....?...$?A????|
00000e70  4a ff ff ff 48 89 44 24  04 89 3c 24 e8 2f ff ff  |J???H.D$..<$?/??|
00000e80  ff 89 44 24 04 8d 46 fe  89 04 24 e8 20 ff ff ff  |?.D$..F?..$? ???|
00000e90  eb bb 8d 7e ff c7 44 24  04 01 00 00 00 89 3c 24  |?.~??D$......<$|
00000ea0  e8 0b ff ff ff eb 81 8d  7e ff c7 44 24 04 01 00  |?.????..~??D$...|
00000eb0  00 00 89 3c 24 e8 f6 fe  ff ff eb 91 83 f8 01 74  |...<$??????..?.t|
00000ec0  34 83 e8 02 89 3c 24 8d  7e fe 89 44 24 04 e8 dd  |4.?..<$.~?.D$.??|
00000ed0  fe ff ff 89 3c 24 89 44  24 04 e8 d1 fe ff ff 85  |???.<$.D$.?????.|
00000ee0  ff 0f 84 09 ff ff ff 85  c0 75 1f 83 ee 03 b0 01  |?...???.?u..?.?.|
00000ef0  e9 c9 fe ff ff 8d 7e fe  c7 44 24 04 01 00 00 00  |?????.~??D$.....|

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

00000f00  89 3c 24 e8 a8 fe ff ff  eb d5 48 83 ee 03 89 44  |.<$??????H.?..D|
00000f10  24 04 89 3c 24 e8 96 fe  ff ff e9 9f fe ff ff 90  |$..<$?.????.???.|
00000f20  55 89 e5 83 ec 38 89 75  f8 8b 75 0c 89 5d f4 e8  |U.?.?8.u?.u..]??|
00000f30  00 00 00 00 5b 89 7d fc  8b 46 04 89 04 24 e8 bd  |....[.}?.F...$?|
00000f40  10 00 00 89 c7 8b 46 08  89 04 24 e8 b0 10 00 00  |....?.F...$?...|
00000f50  89 c6 e8 ae 10 00 00 85  ff 89 45 e4 75 42 8d 7e  |.??....?.E?uB.~|
00000f60  01 e8 9f 10 00 00 89 7c  24 04 89 c6 8d 83 b6 00  |.?.....|$..?..?.|
00000f70  00 00 89 04 24 e8 95 10  00 00 8d 83 be 00 00 00  |....$?......?...|
00000f80  2b 75 e4 89 04 24 89 74  24 04 e8 80 10 00 00 8b  |+u?..$.t$.?.....|
00000f90  5d f4 31 c0 8b 75 f8 8b  7d fc c9 c3 0f 1f 40 00  |]?1?.u?.}???..@.|
00000fa0  85 f6 74 2c 8d 46 ff 89  3c 24 89 44 24 04 e8 fd  |.?t,.F?.<$.D$.??|
00000fb0  fd ff ff 89 44 24 04 8d  47 ff 89 04 24 e8 ee fd  |???.D$..G?..$???|
00000fc0  ff ff 89 c7 eb 9b 66 2e  0f 1f 84 00 00 00 00 00  |??.??.f.........|
00000fd0  8d 47 ff c7 44 24 04 01  00 00 00 89 04 24 e8 cd  |.G??D$.......$??|
00000fe0  fd ff ff 89 c7 e9 77 ff  ff ff 6c 20 3d 20 25 64  |???.??w???l = %d|
00000ff0  0a 00 25 6c 64 0a 00 00  00 00 00 00 00 00 00 00  |..%ld...........|
00001000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00001010  00 10 00 00 00 10 e0 8f  08 10 e0 8f 00 10 00 00  |......?...?.....|
00001020  0c 20 00 00 08 20 00 00  04 20 00 00 00 20 00 00  |. ... ... ... ..|
00001030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002000  f4 f4 f4 f4 f4 f4 f4 f4  f4 f4 f4 f4 f4 f4 f4 f4  |????????????????|
00002010  f4 f4 f4 f4 00 00 00 00  00 00 00 00 00 00 00 00  |????............|
00002020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

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

00003000  02 00 00 00 1e 01 00 00  80 1d 00 00 1b 00 00 00  |................|
00003010  1e 01 00 00 94 1d 00 00  2e 00 00 00 0e 03 00 00  |................|
00003020  10 20 00 00 40 00 00 00  0f 03 00 00 0c 20 00 00  |. ..@........ ..|
00003030  48 00 00 00 0f 03 00 00  08 20 00 00 50 00 00 00  |H........ ..P...|
00003040  0f 03 00 00 00 20 00 00  5c 00 00 00 03 00 10 00  |..... ..\.......|
00003050  00 10 00 00 70 00 00 00  0f 01 00 00 b0 1d 00 00  |....p.......?...|
00003060  75 00 00 00 0f 03 00 00  04 20 00 00 7e 00 00 00  |u........ ..~...|
00003070  0f 01 00 00 20 1f 00 00  84 00 00 00 0f 01 00 00  |.... ...........|
00003080  40 1d 00 00 8a 00 00 00  01 00 01 02 00 00 00 00  |@...............|
00003090  90 00 00 00 01 00 01 02  00 00 00 00 97 00 00 00  |................|
000030a0  01 00 01 02 00 00 00 00  9d 00 00 00 01 00 01 02  |................|
000030b0  00 00 00 00 0b 00 00 00  0c 00 00 00 0d 00 00 00  |................|
000030c0  0e 00 00 00 20 00 64 79  6c 64 5f 73 74 75 62 5f  |.... .dyld_stub_|
000030d0  62 69 6e 64 69 6e 67 5f  68 65 6c 70 65 72 00 5f  |binding_helper._|
000030e0  5f 64 79 6c 64 5f 66 75  6e 63 5f 6c 6f 6f 6b 75  |_dyld_func_looku|
000030f0  70 00 64 79 6c 64 5f 5f  6d 61 63 68 5f 68 65 61  |p.dyld__mach_hea|
00003100  64 65 72 00 5f 4e 58 41  72 67 63 00 5f 4e 58 41  |der._NXArgc._NXA|
00003110  72 67 76 00 5f 5f 5f 70  72 6f 67 6e 61 6d 65 00  |rgv.___progname.|
00003120  5f 5f 6d 68 5f 65 78 65  63 75 74 65 5f 68 65 61  |__mh_execute_hea|
00003130  64 65 72 00 5f 61 63 6b  00 5f 65 6e 76 69 72 6f  |der._ack._enviro|
00003140  6e 00 5f 6d 61 69 6e 00  73 74 61 72 74 00 5f 61  |n._main.start._a|
00003150  74 6f 69 00 5f 63 6c 6f  63 6b 00 5f 65 78 69 74  |toi._clock._exit|
00003160  00 5f 70 72 69 6e 74 66  00 00 00 00              |._printf....|
0000316c

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

один раз формат из-за кода сообщения слетел, игнор

anonymous
()

Почувствуйте разницу: gcc -O3 test.c ./a.out 10 1000000000 l = 451808768 11220000

gcc -O3 test.c -funroll-loops ./a.out 10 1000000000 l = 451808768 1840000

P.S. видать на MacOS X раскрутка циклов просто включена по умолчанию

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

Почувствуйте разницу: gcc -O3 test.c ./a.out 10 1000000000 l = 451808768 11220000

gcc -O3 test.c -funroll-loops ./a.out 10 1000000000 l = 451808768 1840000

P.S. видать на MacOS X раскрутка циклов просто включена по умолчанию

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

В Си неправильные строки. Счётчик так и не смог обнаружить конец строки. Выдохся. :)

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

wfrag@fragentoo ~/1 $ gcc -O3 test.c
wfrag@fragentoo ~/1 $ ./a.out 10 1000000000
l = 451808768
10750000
wfrag@fragentoo ~/1 $ gcc -O3 -funroll-loops test.c
wfrag@fragentoo ~/1 $ ./a.out 10 1000000000
l = 451808768
1670000


Ну что ж, C -- зачёт :)

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

>Согласен частично. Ядро с дровами пусть останется на С+asm, а все что выше должно быть написано на языке уровня Java или C#.

Так и есть в операционной системе Emacs - ядро с дровами на C, а все что выше на Lisp

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

>wfrag@fragentoo ~/1 $ gcc -O3 test.c
>wfrag@fragentoo ~/1 $ javac Test.java 
>wfrag@fragentoo ~/1 $ ./a.out 
>l = 451808768
>10530000
>wfrag@fragentoo ~/1 $ java -cp . -XX:CompileThreshold=10 -XX:+AggressiveOpts -server  Test
>l = 451808768
>15180000
>l = 451808768
>5640000

Блин, где вы такой gcc взяли:

$ gcc --version
gcc.exe (GCC) 3.4.5 (mingw-vista special r3)

$ ./a.exe
l = 451808768
6859

$ java -cp . -XX:CompileThreshold=10 -XX:+AggressiveOpts -server  Test
l = 451808768
13656250
l = 451808768
10312500

$ java -version
java version "1.6.0_05"

А я уж чуть не повёлся... =D

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

Чёрт, какой-то бракованный у меня gcc :)

wfrag@fragentoo ~/work/ict/nanorm $ gcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: /var/tmp/portage/sys-devel/gcc-4.1.2/work/gcc-4.1.2/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.2/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --enable-libmudflap --disable-libssp --disable-libgcj --with-arch=i686 --enable-languages=c,c++,treelang,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 4.1.2 (Gentoo 4.1.2 p1.0.2)


Gentoo сосёт?

P.S. Ты это, вариант с параметрами запускай. Без параметров там, в принципе, всё (или большая часть) на этапе компиляции считается.

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

а вы всетаки скомпилите с-шный вариант вот так 'gcc -O3 -finline-functions -funroll-loops' - думаю это вас удивит. в данном конкретном случае inline-functions не играет, но на незнании этих двух ключей построено 99% мифов о том, что жаба быстрее с.

производительность реализации нужно мерять на реальных задачах и со знанием дела (хотябы иметь базовые знания о инструментарии). подобные же "тесты" никуда негодятся. например очень просто эффективно отрубить гц в жабе выставив -Xms3400m -Xmx3400m, а в конкурирующей программе (например на с ) использовать системный malloc и радоваться что реализация на жабе работает быстрее. только что это даст кроме пиара? тогда и в реализации на с нужно использовать скажем арену или пул с преаллокированным 3.4 гиговым буфером...

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

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

>Ты это, вариант с параметрами запускай. Без параметров там, в принципе, всё (или большая часть) на этапе компиляции считается.

Кто мешает это сделать яве?

В Microsoft Research работают лучшие инженеры и ученые. Результаты не заставляют ждать - .Net опережает по-скорости тормозной gcc как в компиляции, так и в исполнении кода.

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

> P.S. Ты это, вариант с параметрами запускай. Без параметров там, в принципе, всё (или большая часть) на этапе компиляции считается.

Ок, с параметрами:

$ ./a 3 13 l = 65533 14843

А жабке что-то поплохело:

$ java -cp . -Xss16m -XX:CompileThreshold=10 -server Test2 3 13 l = 65533 161500000 l = 65533 164375000

Жду третью итерацию... :(

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

> В Microsoft Research работают лучшие инженеры и ученые.

А уж какие монстры работают в рекламном отделе самой Microsoft - это не описАть словами.

tailgunner ★★★★★
()
Ответ на: комментарий от yyk

Вот с параметрами и не только:

$ ./a 10 1000000000
l = 451808768
6890

$ java -cp . -XX:CompileThreshold=10 -server  Test 10 1000000000
l = 451808768
13687500
l = 451808768
13703125
l = 451808768
3656250
l = 451808768
3640625
l = 451808768
3640625

$ gcc -O3 -finline-functions -funroll-loops test.c

$ ./a 10 1000000000
l = 451808768
1140

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

> В Microsoft Research работают лучшие инженеры и ученые. Результаты не заставляют ждать - .Net опережает по-скорости тормозной gcc как в компиляции, так и в исполнении кода.

Автор, проспись: ученые из MSR делают компилятор хакселя и статейки научные пишут, а вовсе не .NET ;)

sv75 ★★★★★
()
Ответ на: комментарий от yyk

Остается только понять, где такие gcc дают.

CLOCKS_PER_SEC-то у тебя хоть 1000000? А то может оно в 1000 раз меньше меряет :) В виндах оно 1000, AFAIK.

WFrag ★★★★
()
Ответ на: комментарий от yyk

Вот это номер:

$ cat test.c
#include <stdio.h>

int main(int argc, char** argv) {
    int count1 = atoi(argv[1]);
    int count2 = atoi(argv[2]);
    long c = clock();
    int l = 0, i, j;
    for( j = 0; j < count1; ++j ) {
        for( i = 0; i < count2; ++i ) {
            l += i;
        }
    }
    long end = clock();
    printf( "l = %d\n", l );
    printf("%ld\n", end - c);
    return 0;
}

$ llvm-gcc -O3 test.c

$ ./a 10 1000000000
l = 451808768
0

$ time ./a 10 1000000000
l = 451808768
0

real    0m0.047s
user    0m0.015s
sys     0m0.015s


Может другие алгоритмы есть? =D

yyk ★★★★★
()
Ответ на: комментарий от WFrag

> CLOCKS_PER_SEC-то у тебя хоть 1000000? А то может оно в 1000 раз меньше меряет :) В виндах оно 1000, AFAIK.

Сорри, с си "на ВЫ" - любой тест-кейс? :)

yyk ★★★★★
()
Ответ на: комментарий от WFrag

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

Соответственно, ускорение которое вы ивсе надлюдаете происходит изза того, что Java просто не исполняла эту самую сортировку а выдала результаты из кэша.

ps
учите матчасть.
pps
А может ты всё это знал, просто забыл рассказать?

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

>CLOCKS_PER_SEC-то у тебя хоть 1000000? А то может оно в 1000 раз меньше меряет :) В виндах оно 1000, AFAIK.

Похоже, я реально в этом проипался :) Не удивлюсь, если под Mac OS оно тоже 1000 :]

#include <stdio.h> #include <time.h>

int main() { printf("%d\n", CLOCKS_PER_SEC); }

Выдает у меня 1000000.

WFrag ★★★★
()
Ответ на: комментарий от yyk

>Сорри, с си "на ВЫ" - любой тест-кейс? :)

Да. Это то, на что надо делить вывод clock(), чтобы получить секунды. То есть если это 1000000, то clock выдает микросекунды, а если 1000, то миллисекунды :]

WFrag ★★★★
()
Ответ на: комментарий от yyk

С тем-же аккерманом уже не так:

$ llvm-gcc -O3 test2.c

$ ./a 3 13
l = 65533
16703

$ gcc -O3 test2.c

$ ./a 3 13
l = 65533
15031

$ gcc -O3 -finline-functions -funroll-loops test2.c

$ ./a 3 13
l = 65533
14968

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

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

>Соответственно, ускорение которое вы ивсе надлюдаете происходит изза того, что Java просто не исполняла эту самую сортировку а выдала результаты из кэша.


Это не так. Во-первых, Аккерман в "прогреве" и не нуждался, там и так достаточно вызовов для срабатывания JIT-а. Поэтому JIT-эффект особо не сказывался.

Во-вторых, вариант с суммированием -- это не чистая функция, а функция с побочным эффектом (вывод на экран).

В третьих, вот тебе такой вариант, вызываем первые два раза с другими параметрами:

wfrag@fragentoo ~/1 $ cat Test.java
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;


public class Test {
    public static void main(String[] args) {
        int count1 = Integer.parseInt(args[0]);
        int count2 = Integer.parseInt(args[1]);
        test(count1+1, count2+1);
        test(count1+2, count2+2);
        System.err.println("Real results");
        test(count1, count2);
        
    }

    public static void test(int count1, int count2) {
        ThreadMXBean mx = ManagementFactory.getThreadMXBean();
        long c = mx.getCurrentThreadCpuTime();
        int l = 0, i, j;
        for( j = 0; j < count1; ++j ) {
            for( i = 0; i < count2; ++i ) {
                l += i;
            }
        }
        long end = mx.getCurrentThreadCpuTime(); 
        System.err.println( "l = " + l);
        System.err.println((end - c) / 1000);
    }
}

wfrag@fragentoo ~/1 $ javac Test.java 
wfrag@fragentoo ~/1 $ /opt/sun-jdk-1.6.0.06/bin/java -cp . -Xss16m -XX:CompileThreshold=10 -server  Test 10 1000000000
l = 1618564864
16740000
l = 490353676
18100000
Real results
l = 451808768
5630000

И тоже видим ускорение. Так что не надо чушь пороть, ей же больно :)

WFrag ★★★★
()
Ответ на: комментарий от scaldov

даёшь мультитредовую реализацию сортировки 2Gb случайных данных пузырьком на java и на C используя 16 процессоров

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

>...ученые из MSR делают компилятор хакселя и статейки научные пишут, а вовсе не .NET ;)

Хаскель это вам не быдло c++, компиляторы которого клепают все кому не лень.

Статейки, видимые публике это малая часть всего что они делают, потому то красноглазый gcc и splint сливают msvc и prefast, а ява никогда не догонит .net

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

>посмотрел - 1000 :(

Забавно, судя по http://www.digitalmars.com/d/archives/digitalmars/D/bugs/2189.html на Mac OS X оно вообще 100. То есть макосники, выходит, меня на 10000 раз наипали? Неслабо :)

P.S. Кто-нибудь может проверить, сколько CLOCKS_PER_SEC на Mac OS X?

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

Вот вы красноглазые, вечно вам что-нить проверять методом научного тыка. Взять и разделить на CLOCKS_PER_SEC нельзя?

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

Я не спец в сях, но меня смущает кой чего. А именно

>int count2
>int l = 0, i, j;
>for( i = 0; i < count2; ++i ) {

ну и напоследок
>1000000000

И че? Это влезет в int ?

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

>Вот вы красноглазые, вечно вам что-нить проверять методом научного тыка. Взять и разделить на CLOCKS_PER_SEC нельзя?

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

WFrag ★★★★
()
Ответ на: комментарий от vada

-2 147 483 647 .. +2 147 483 648 влазит, что больше чем 1 000 000 000

Если бы не влазило то компилятор промышленного качества выдал бы варнинг, если даже не еррор. Гцц скорее всего промолчит, ибо поделка.

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

Как жаль, что ещё не созано ни одного компилятора "промышленного качества " :(

anonymous
()

Хм, все проспал:

some@some$ java -cp . -XX:CompileThreshold=10 -XX:+AggressiveOpts -server Test
l = 451808768
14840000
l = 451808768
14440000
l = 451808768
3850000
some@some$ ./a.out 
l = 451808768
1700000

Я правильно понимаю, что с новыми ключиками "-O3 -finline-functions
-funroll-loops" Java обкакалась и жабакодеры притихли? Что даже
с учетом разогрева (ГыГы) сливает больше чем в два раза. А без
разогрева (что более реальная ситуация) проигрывает все девять раз.

Хо, Хо, Хо.

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

Искренний вам поклон, aydef. Отстояли честь Си, разрушили все планы злобных жабокодеров, пресекли их жалкие попытки обмана и подтасовки.

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

>А я жду технической статьи Сана на тему "хотя аппаратный вечный двигатель невозможен, над программным вечным двигателем, написанным на яве, уже ведутся работы"

Продолжая настоятельно советовать ознакомиться с предметом твоего вожделения, штобы не пукать в каждой теме в лужу: http://www.linux.org.ru/view-message.jsp?msgid=1813576 http://www.ibm.com/developerworks/library/j-jtp12214/ http://www.ryanlowe.ca/blog/archives/000447_java_microbenchmarks_are_evil.php http://www.ece.cmu.edu/~ece749/docs/acmCompSurveyHighPerfJava.pdf http://www.jroller.com/ff/date/20050603#lies_damn_lies http://www.javalobby.org/java/forums/t18985.html?start=15 http://osdir.com/ml/lang.smalltalk.croquet.devel/2007-03/msg00006.html Признайся себе на конец, что ты ее хочешь. Хочешь жабу. Жаждешъ

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

>А без разогрева (что более реальная ситуация) проигрывает все девять раз.

Реальная в чем? В непонятных бенчмарках? Для сервера наоборот более реальна ситуация, когда он днями работает.

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

> Реальная в чем? В непонятных бенчмарках? Для сервера наоборот более реальна ситуация, когда он днями работает.

Ещё раз. У меня не сервер. И если я когда либо говорил, что Java тормозит, то имел ввиду десктопные приложения.

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