Balancer: Все сообщения за 30 Мая 2003 года

 
ПнВтСрЧтПтСбВс
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Balancer

администратор
★★★★★
Balancer>VC7: 4.7с
Balancer>O'Caml: 4.0с

Упасть можно. Вот в таком варианте, вроде бы даже более тупом:
code text
  1. <font size=1>Created with colorer-take5 library. Type '[b]sml[/b]'</font>
  2.  
  3.  
  4. <span style='color:#808030; '>let</span> <span style='color:#800000; font-weight:bold; '>rec</span> fib n <span style='color:#808030; '>=</span>
  5.     <span style='color:#800000; font-weight:bold; '>match</span><span style='color:#808030; '>(</span>n<span style='color:#808030; '>)</span> <span style='color:#800000; font-weight:bold; '>with</span>
  6.       <span style='color:#008c00; '>0</span> <span style='color:#808030; '>-></span> <span style='color:#008c00; '>1</span>
  7.     \<span style='color:#808030; '>|</span> <span style='color:#008c00; '>1</span> <span style='color:#808030; '>-></span> <span style='color:#008c00; '>1</span>
  8.     \<span style='color:#808030; '>|</span> n <span style='color:#808030; '>-></span> fib<span style='color:#808030; '>(</span>n<span style='color:#808030; '>-</span><span style='color:#008c00; '>1</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>+</span> fib<span style='color:#808030; '>(</span>n<span style='color:#808030; '>-</span><span style='color:#008c00; '>2</span><span style='color:#808030; '>)</span>
  9. <span style='color:#808030; '>;</span><span style='color:#808030; '>;</span>


Фибоначчи(40) вычисляется на O'Caml за 3.5 сек!

P.S. Примечание: слеши перед | - глюк форума, но возиться сейчас лень :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Не знаю... Я всю жизнь пролетал именно с этого архива, так и не перепаковывал его ни разу... И про подобный глюк не слышал :-/
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
С очень старыми играми проблемы могут быть. Например, DOS-игры со звуком могут тормозить. Но всё равно, с совместимостью сильно лучше, чем в Win2K, к примеру. Ну а для Win95/98 игр проблем совсем никаких. WinXP вообще умеет 95-й или 98-й прикинуться. Параметр такой есть в свойствах нужного EXE-шника :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Это у всех так. Пока gcl.ru висит, я вырубил баннер, а то страница не догружается и народ под IE оказывается без визуального редактора :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
avmich>Ну-ну :) . Это, знаешь, как Apple - уже лет 15 помирает...

А что, жив разве? :D Как погляжу я на наших дизайнеров... Особенно на OS 9. (OS X тоже есть парочка, но их я не щупал). Жалко становится.
- Сбрось мне по асе ссылочку.
- Не могу.
- ?
- У меня PDF рендерится.
(и человек сидит, книжку читает. на бумаге. потому, как операционка фактически однозадачная :D)

В общем, где могут, дизайнеры у нас на PC бегут. Вот, главный дизайнер из-за P4-2.4G не вылезает уже... :)

Разве это жизнь?? :D

Впрочем, я и не говорю, что C++ хотя бы лет за 10 помрёт... Очень уж много на нём всего слеплено :) Фортран, вон, до сих пор жив :)

avmich>struct eqstr

Э... А include какие подключать? В твоих ссылочках не сказано.

(Эх, щаз практическое быстродействие языков сравнивать начнём, на реальной задаче, а не на набившем оскомину Фибоначчи :D)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
А по сабжу - нам не память ассоциативная нужна, а операция быстрого хеширования в процессор.

А то ассоциативная память, ведь, ещё и ассоциативную адресную шину потребует. А это как?? :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Это на грани юмора :)




Это дело - файл 13 - 14 гиг пишеться экспедициями на бобины в
странной структуре типа дата, квадрат, etc данные - скрипт потом сооружает
одну большую карту которая уже потом пихаеться в оракл. Этот скрипт по
скорости не критичен - главное чтоб успевал за старинной сановской
бобиной образца 75 года. Раньше был написан на турбо-сях, но к сожалению
тот кто его писал ушёл на пенсию, и переписывать под солярку,
естественно, не захотел. Код ужасно кривой, юзал raw винт в качестве
виртуальной памяти и за бобиной не поспевал. С торжественным вручением
доки по питону самый умный геофизик временно переквалифицировался в
программера и умудрился родить код раз в 20 меньше по размеру и
в 5 раз быстрее по скорости. После мелкого оптимизинга и переработки
той части с большим хэшем на пёрле это чудо даже успешно работало до
дня когда издохла вышеупомянутая бобина. Hикто, кстати, не знает где
сановские бобины починить можно?




http://groups.google.com.ru/groups?hl=ru&l...617.n463.z2.ftn

:)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Balancer>>Вот, главный дизайнер из-за P4-2.4G не вылезает уже... :)
Mishka>Так купили бы машины помощнее - типа дуал 1.1 гигагерца - какие проблемы то.

Гм. ИМХО 2.4GHz по любому будет быстрее, чем 2x1.1GHz :)

А так - пока ему хватает :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Итак, есть 16Мб (391.4 тыс. строк) лог пакетов моей сетевухи за месяц. Вид такой:

UDP 213.252.121.73 137 213.252.121.68 137 192 0
ICMP 213.252.121.73 0 213.252.121.68 0 60 60
TCP 213.252.121.73 139 213.252.121.68 client 1367 1689
UDP 213.252.121.73 137 62.205.176.30 137 550 156
TCP 213.252.121.73 80 213.252.121.68 client 88 272

Т.е. Протокол, IP_источника(всегда мой), Порт_источника, IP_приёмника, Порт_приёмника, послано, получено (байт).

Надо посмотреть, с какого IP у меня какой трафик суммарный и отсортировать по трафику.

Для начала мой текущий рабочий для таких целей инструмент. Perl.
[/span]
CODE
Created with colorer-take5 library. Type 'perl'  open FH[color=#808030; ],[/color] [color=#0000e6; ]"[/color][color=#008c00; ]03[/color][color=#0000e6; ]-[/color][color=#008c00; ]05[/color][color=#0000e6; ]-any.txt"[/color] [color=#808030; ]or[/color] die $![color=#800080; ];[/color] while[color=#808030; ]([/color][color=#40015a; ]<FH>[/color][color=#808030; ])[/color] [color=#800080; ]{[/color]     $hosts[color=#800080; ]{[/color]$4[color=#800080; ]}[/color][color=#808030; ]+[/color][color=#808030; ]=[/color]$7 [color=#808030; ]if[/color][color=#0000e6; ] [/color][color=#800000; ]/[/color][color=#0000e6; ]^[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\w[/color][color=#0000e6; ]+)[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\.[/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\.[/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\.[/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]})[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\w[/color][color=#0000e6; ]+)[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\.[/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\.[/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\.[/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]{[/color][color=#008c00; ]1[/color][color=#0000e6; ],[/color][color=#008c00; ]3[/color][color=#0000e6; ]})[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\w[/color][color=#0000e6; ]+)[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]+)[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+([/color][color=#0f69ff; ]\d[/color][color=#0000e6; ]+)[/color][color=#800000; ]/[/color][color=#800080; ];[/color] [color=#800080; ]}[/color]  open FH[color=#808030; ],[/color] [color=#0000e6; ]">perl.txt"[/color] [color=#808030; ]or[/color] die $![color=#800080; ];[/color] print FH [color=#0000e6; ]"[/color][color=#0000e6; ]$_[/color][color=#0000e6; ]: [/color][color=#0000e6; ]$hosts[/color][color=#0000e6; ]{[/color][color=#0000e6; ]$_[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\n[/color][color=#0000e6; ]"[/color] for sort [color=#800080; ]{[/color] $hosts[color=#800080; ]{[/color]$b[color=#800080; ]}[/color] [color=#40015a; ]<=>[/color] $hosts[color=#800080; ]{[/color]$a[color=#800080; ]}[/color] [color=#800080; ]}[/color] keys %hosts[color=#800080; ];[/color] 
[span class='postcolor']

Время написания - около 15 мин. Минут 5 на код, минут 10 на оптимизацию. Первоначальный вариант был раза в два больше и работал 40 секунд. Этот вариант: 3.7 сек. В отчёте - 1512 строк. Для примера, трафик Авиабазы занимает первое место и составляет 295Мб :)

Оптимизация была в подборе регекспа. Сперва он был совсем простой, с кучей \s+(.+?)\s+(.+?)... - вот эти .+? и тормозили :)

А, зачем регексп? - там не все строки в этом формате. Ещё есть строки со временем блока пакетов и т.п. Не нужные, в общем :) Только что в голову пришла мысль вместо регекспа попробовать split /\s+/ - сейчас сравню...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
Это сообщение редактировалось 30.05.2003 в 11:32

Balancer

администратор
★★★★★
Мде. Вариант
[/span]
CODE
Created with colorer-take5 library. Type 'perl'  open FH[color=#808030; ],[/color] [color=#0000e6; ]"[/color][color=#008c00; ]03[/color][color=#0000e6; ]-[/color][color=#008c00; ]05[/color][color=#0000e6; ]-any.txt"[/color] [color=#808030; ]or[/color] die $![color=#800080; ];[/color] while[color=#808030; ]([/color][color=#40015a; ]<FH>[/color][color=#808030; ])[/color] [color=#800080; ]{[/color]     @x[color=#808030; ]=[/color][color=#808030; ]split[/color][color=#0000e6; ] [/color][color=#800000; ]/[/color][color=#0f69ff; ]\s[/color][color=#0000e6; ]+[/color][color=#800000; ]/[/color][color=#800080; ];[/color]     $hosts[color=#800080; ]{[/color]$x[color=#808030; ][[/color][color=#008c00; ]4[/color][color=#808030; ]][/color][color=#800080; ]}[/color][color=#808030; ]+[/color][color=#808030; ]=[/color]$x[color=#808030; ][[/color][color=#008c00; ]7[/color][color=#808030; ]][/color] if $x[color=#808030; ][[/color][color=#008c00; ]4[/color][color=#808030; ]][/color] [color=#808030; ]and[/color] $x[color=#808030; ][[/color][color=#008c00; ]7[/color][color=#808030; ]][/color][color=#800080; ];[/color] [color=#800080; ]}[/color]  open FH[color=#808030; ],[/color] [color=#0000e6; ]">perl.txt"[/color] [color=#808030; ]or[/color] die $![color=#800080; ];[/color] print FH [color=#0000e6; ]"[/color][color=#0000e6; ]$_[/color][color=#0000e6; ]: [/color][color=#0000e6; ]$hosts[/color][color=#0000e6; ]{[/color][color=#0000e6; ]$_[/color][color=#0000e6; ]}[/color][color=#0f69ff; ]\n[/color][color=#0000e6; ]"[/color] for sort [color=#800080; ]{[/color] $hosts[color=#800080; ]{[/color]$b[color=#800080; ]}[/color] [color=#40015a; ]<=>[/color] $hosts[color=#800080; ]{[/color]$a[color=#800080; ]}[/color] [color=#800080; ]}[/color] keys %hosts[color=#800080; ];[/color] 
[span class='postcolor']
считает 10.8 секунд. Со сравнением с регекспом - шустрее :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
Это сообщение редактировалось 30.05.2003 в 11:32

Balancer

администратор
★★★★★
PHP:
[/span]
CODE
Created with colorer-take5 library. Type 'php'  <?[/span]     $fh=fopen("03-05-any.txt","r");     while(!feof($fh))         if(preg_match("/^\s+(\w+)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\w+)\s+(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+(\w+)\s+(\d+)\s+(\d+)/",fgets($fh),$m))             $hosts[[/color]$m[color=#808030; background:#ffffe8; ][[/color]4[color=#808030; background:#ffffe8; ]]]+=$m[[/color]7[color=#808030; background:#ffffe8; ]];     arsort($hosts);     reset($hosts);     $fh=fopen("php.txt","w");     foreach($hostsas$ip=>$traff)     {         fputs($fh,"$ip: $traff\n");     }     fclose($fh); [span style='color:#a65700; background:#ffffe8; ']?> 
[span class='postcolor']

7.8 сек. Время написания - около 10 мин. Сперва был попробован вариант с родным split, но не заработал (нарезает по каждому пробелу, а не по их группе.) Вариант с preg_split не пробовал, т.к., скорее всего, будет хуже.

Уф, всё. Я - спать. Остальное - завтра :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
Это сообщение редактировалось 30.05.2003 в 11:33

Balancer

администратор
★★★★★
ComputerMage>Для Виндов есть winat, который работает как at но не как cron

У меня проблема не в расписаниях, мне и nnCron по уши хватает :)

Дело в проблемах со "вложенными" прозвонками. Сижу я, например, в Интернете, а в это время какая-то бяка (скажем, синхронизация времени) "звонит", отрабатывает, и бросает трубку! Вот у меня и введён был тупой счётчик запущенных программ. Каждая прозвонка увеличивает на единицу. Если был нулевой - звонит. При попытке разрывания связи - счётчик уменьшается. Стал ноль - реально разорвали соединение :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Мда. Завтра буду думать как STL прикрутить к своей задаче :) ( http://airbase.ru/forums/index.php?act=ST&...f=11&t=20786&s= ). Для теста...

Кстати, в STL есть сортировка хеша по значениям?
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Чуток подкрасил через [code cpp] :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
asoneofus>2х1.1 Повера :) побыстрее будут чем 3Гигп пня :)




А, Повера... А это не миф, что они нынче быстрее Интела? :D Что-то не кажутся мне Маки шустрыми даже в сравнении с моей рабочей PIII-800... Тем паче, что память там - обычная SDRAM, винты - IDE... :) Даже если проц и шустрее, не думаю, что очень уж лимитирует.

И ещё - сколько стоить будет 2x1.1 PPC? Может, дешевле 2x3GHz P4 взять? :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Закаты в ваших краях тоже великолепные! :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Уф... Хватит с меня! "Голый" C++, без внешних либ, в лице VC7:
[/span]
CODE
Created with colorer-take5 library. Type 'cpp'  [color=#004a43; ]#[/color]include[color=#004a43; ] [/color][color=#0000e6; ]<stdio.h>[/color] [color=#004a43; ]#[/color]include[color=#004a43; ] [/color][color=#0000e6; ]<string.h>[/color]  void main[color=#808030; ]([/color]void[color=#808030; ])[/color] [color=#800080; ]{[/color]     const int max_items[color=#808030; ]=[/color][color=#008c00; ]20000[/color][color=#800080; ];[/color]      unsigned int keys[color=#808030; ][[/color]max_items[color=#808030; ]][/color][color=#800080; ];[/color]     int values[color=#808030; ][[/color]max_items[color=#808030; ]][/color][color=#800080; ];[/color]     int pos[color=#808030; ]=[/color][color=#008c00; ]0[/color][color=#800080; ];[/color]     char buf[color=#808030; ][[/color][color=#008c00; ]256[/color][color=#808030; ]][/color][color=#800080; ];[/color]      char proto[color=#808030; ][[/color][color=#008c00; ]6[/color][color=#808030; ]][/color][color=#800080; ];[/color]     char src[color=#808030; ][[/color][color=#008c00; ]16[/color][color=#808030; ]][/color][color=#800080; ];[/color]     char src_port[color=#808030; ][[/color][color=#008c00; ]16[/color][color=#808030; ]][/color][color=#800080; ];[/color]     char dst[color=#808030; ][[/color][color=#008c00; ]16[/color][color=#808030; ]][/color][color=#800080; ];[/color]     char dst_port[color=#808030; ][[/color][color=#008c00; ]16[/color][color=#808030; ]][/color][color=#800080; ];[/color]     int sent[color=#800080; ];[/color]     int [color=#008484; ]recv[/color][color=#800080; ];[/color]     unsigned int ip[color=#800080; ];[/color]     int ip_b1[color=#808030; ],[/color]ip_b2[color=#808030; ],[/color]ip_b3[color=#808030; ],[/color]ip_b4[color=#800080; ];[/color]      FILE[color=#808030; ]*[/color] fp[color=#808030; ]=[/color]fopen[color=#808030; ]([/color][color=#0000e6; ]"03-05-any.txt"[/color][color=#808030; ],[/color][color=#0000e6; ]"r"[/color][color=#808030; ])[/color][color=#800080; ];[/color]     while[color=#808030; ]([/color][color=#808030; ]![/color]feof[color=#808030; ]([/color]fp[color=#808030; ])[/color][color=#808030; ])[/color]     [color=#800080; ]{[/color]         fgets[color=#808030; ]([/color]buf[color=#808030; ],[/color][color=#008c00; ]254[/color][color=#808030; ],[/color]fp[color=#808030; ])[/color][color=#800080; ];[/color]         [color=#696969; ]// Разберём строку[/color]         fscanf[color=#808030; ]([/color]fp[color=#808030; ],[/color] [color=#0000e6; ]"[/color][color=#0f69ff; ]%s[/color][color=#0000e6; ] [/color][color=#0f69ff; ]%s[/color][color=#0000e6; ] [/color][color=#0f69ff; ]%s[/color][color=#0000e6; ] [/color][color=#0f69ff; ]%s[/color][color=#0000e6; ] [/color][color=#0f69ff; ]%s[/color][color=#0000e6; ] [/color][color=#0f69ff; ]%d[/color][color=#0000e6; ] [/color][color=#0f69ff; ]%d[/color][color=#0000e6; ]"[/color][color=#808030; ],[/color] proto[color=#808030; ],[/color] src[color=#808030; ],[/color] src_port[color=#808030; ],[/color] dst[color=#808030; ],[/color] dst_port[color=#808030; ],[/color] [color=#808030; ]&[/color]sent[color=#808030; ],[/color] [color=#808030; ]&[/color][color=#008484; ]recv[/color][color=#808030; ])[/color][color=#800080; ];[/color]         if[color=#808030; ]([/color][color=#008484; ]recv[/color] [color=#808030; ]&[/color][color=#808030; ]&[/color] strstr[color=#808030; ]([/color]dst[color=#808030; ],[/color][color=#0000e6; ]"."[/color][color=#808030; ])[/color][color=#808030; ]>[/color][color=#008c00; ]0[/color][color=#808030; ])[/color]         [color=#800080; ]{[/color]             [color=#696969; ]// Разберём IP и плучим его численное значение[/color]             sscanf[color=#808030; ]([/color]dst[color=#808030; ],[/color][color=#0000e6; ]"[/color][color=#0f69ff; ]%d[/color][color=#0000e6; ].[/color][color=#0f69ff; ]%d[/color][color=#0000e6; ].[/color][color=#0f69ff; ]%d[/color][color=#0000e6; ].[/color][color=#0f69ff; ]%d[/color][color=#0000e6; ]"[/color][color=#808030; ],[/color] [color=#808030; ]&[/color]ip_b1[color=#808030; ],[/color] [color=#808030; ]&[/color]ip_b2[color=#808030; ],[/color] [color=#808030; ]&[/color]ip_b3[color=#808030; ],[/color] [color=#808030; ]&[/color]ip_b4[color=#808030; ])[/color][color=#800080; ];[/color]             ip[color=#808030; ]=[/color]ip_b1[color=#808030; ]<[/color][color=#808030; ]<[/color][color=#008c00; ]24[/color][color=#808030; ]|[/color]ip_b2[color=#808030; ]<[/color][color=#808030; ]<[/color][color=#008c00; ]16[/color][color=#808030; ]|[/color]ip_b3[color=#808030; ]<[/color][color=#808030; ]<[/color][color=#008c00; ]8[/color][color=#808030; ]|[/color]ip_b4[color=#800080; ];[/color]                          [color=#696969; ]// Ищем этот IP в хеше[/color]             int found[color=#808030; ]=[/color][color=#808030; ]-[/color][color=#008c00; ]1[/color][color=#800080; ];[/color]             for[color=#808030; ]([/color]int i[color=#808030; ]=[/color][color=#008c00; ]0[/color][color=#800080; ];[/color] i[color=#808030; ]<[/color]pos[color=#800080; ];[/color] i[color=#808030; ]+[/color][color=#808030; ]+[/color][color=#808030; ])[/color]                 if[color=#808030; ]([/color]keys[color=#808030; ][[/color]i[color=#808030; ]][/color][color=#808030; ]=[/color][color=#808030; ]=[/color]ip[color=#808030; ])[/color] [color=#696969; ]// нашли[/color]                 [color=#800080; ]{[/color]                     found[color=#808030; ]=[/color]i[color=#800080; ];[/color]                      break[color=#800080; ];[/color]                 [color=#800080; ]}[/color]              if[color=#808030; ]([/color]found[color=#808030; ]=[/color][color=#808030; ]=[/color][color=#808030; ]-[/color][color=#008c00; ]1[/color][color=#808030; ])[/color] [color=#696969; ]// не нашли[/color]                 if[color=#808030; ]([/color]pos[color=#808030; ]<[/color]max_items[color=#808030; ])[/color]                     keys[color=#808030; ][[/color]found[color=#808030; ]=[/color]pos[color=#808030; ]+[/color][color=#808030; ]+[/color][color=#808030; ]][/color][color=#808030; ]=[/color]ip[color=#800080; ];[/color]                 else                     printf[color=#808030; ]([/color][color=#0000e6; ]"Ошибка: переполнение хеша![/color][color=#0f69ff; ]\n[/color][color=#0000e6; ]"[/color][color=#808030; ])[/color][color=#800080; ];[/color]              if[color=#808030; ]([/color]found[color=#808030; ]![/color][color=#808030; ]=[/color][color=#808030; ]-[/color][color=#008c00; ]1[/color][color=#808030; ])[/color]                 values[color=#808030; ][[/color]found[color=#808030; ]][/color][color=#808030; ]+[/color][color=#808030; ]=[/color][color=#008484; ]recv[/color][color=#800080; ];[/color]          [color=#800080; ]}[/color]     [col


Дальше »»»
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
Это сообщение редактировалось 30.05.2003 в 11:34

Balancer

администратор
★★★★★
Шо, все 16Мб выкладывать?? :D Вы уж лучше исходники давайте. Ну, или бинарники, если у меня такого компилятора/транслятора нет.

Только тест не слишком удачный вышел. Если честно, я думал, что время обработки такого файла будет идти на минуты и у Perl/PHP и C++. Оказалось - слишком просто :)

Подсчёт слов в тексте для Perl/PHP будет такой же скорости, а для C++ - посложнее, поскольку придётся вводить уже полноценый хэш, а не упрощение, основанную на том, что IP все целочисленные. Но такие задачи передо мной не стоят...

Хотя! Есть у меня ещё задачка. Но посложнее, примеры не столь прозрачными будут. Есть 12Мб список незанятых двух/трёх/четырёхзначных доменов в .ru. Есть словари русских и английских слов. Русский можно транслитерировать фонетически, а можно - по совпадению внешнего написания букв (привет, TbMA! :)). Найти среди списка всех доменов домены, входящте в эти списки слов... Перловый скрипт тоже был быстро написан, за минуты, но медленно работал :) Мне хватило, поскольку операция одноразовая, но для теста задание сгодится :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
>MOV ["test"], EAX
>А что там делается внутри, не так уж и важно ;) :D

Вот именно процессор таким и должен заниматься. И это - не сложно. А если делать именно компьютер на таком ядре - ладно, ещё "test" - это как раз 32 разряда. А как ты представляешь запись
MOV ["СоРоК тЫсЯч ОбЕзЬяН в $ОпУ сУнУлИ бАнАн"], EAX
средставми одной только памяти? :) 320-разрядную шину? А если ключ будет длиной 10кБ? А ещё ключ и в регистрах нужно уметь хранить, для косвенной адресации... Короче, для памяти ассоциативной пока ещё архитектура компьютеров не годится :) А вот если хеширование провести ещё в процессоре, то хеш получим обычной разрядности, обычным INT'ом, так что и память нужна обычная :)

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

Кстати, мой тест в соответствующем топике об этом и говорит. Там же интерпретирующий(!) Perl с его честными(!) хешами всего в 3.7 раза проиграл одному из лучших компиляторов C++ с "нечестным", а упрощённым хешем - хеширование - 11 команд, наверное, около 6 тактов, развёртка - 4 команды, наверное, 2 такта. Кстати, на развёртке компилятор опять показал свой интеллект :)
[/span]
CODE
Created with colorer-take5 library. Type 'cpp'  ip_b1[color=#808030; ]=[/color][color=#808030; ]([/color]keys[color=#808030; ][[/color]i[color=#808030; ]][/color][color=#808030; ]>[/color][color=#808030; ]>[/color][color=#008c00; ]24[/color][color=#808030; ])[/color] [color=#808030; ]&[/color] [color=#008000; ]0xFF[/color][color=#800080; ];[/color] ip_b2[color=#808030; ]=[/color][color=#808030; ]([/color]keys[color=#808030; ][[/color]i[color=#808030; ]][/color][color=#808030; ]>[/color][color=#808030; ]>[/color][color=#008c00; ]16[/color][color=#808030; ])[/color] [color=#808030; ]&[/color] [color=#008000; ]0xFF[/color][color=#800080; ];[/color] ip_b3[color=#808030; ]=[/color][color=#808030; ]([/color]keys[color=#808030; ][[/color]i[color=#808030; ]][/color][color=#808030; ]>[/color][color=#808030; ]>[/color] [color=#008c00; ]8[/color][color=#808030; ])[/color] [color=#808030; ]&[/color] [color=#008000; ]0xFF[/color][color=#800080; ];[/color] ip_b4[color=#808030; ]=[/color] keys[color=#808030; ][[/color]i[color=#808030; ]][/color]      [color=#808030; ]&[/color] [color=#008000; ]0xFF[/color][color=#800080; ];[/color] 

оттранслировалось в
CODE
Created with colorer-take5 library. Type 'asm'  movzx   [color=#000080; ]ebx[/color], BYTE PTR _keys$[[color=#000080; ]esp[/color]+[color=#000080; ]esi[/color]*[color=#008c00; ]4[/color][color=#008c00; ]+160373[/color]] mov     [color=#000080; ]eax[/color], DWORD PTR _keys$[[color=#000080; ]esp[/color]+[color=#000080; ]esi[/color]*[color=#008c00; ]4[/color][color=#008c00; ]+160372[/color]] movzx   [color=#000080; ]edx[/color], BYTE PTR _keys$[[color=#000080; ]esp[/color]+[color=#000080; ]esi[/color]*[color=#008c00; ]4[/color][color=#008c00; ]+160374[/color]] movzx   [color=#000080; ]ecx[/color], BYTE PTR _keys$[[color=#000080; ]esp[/color]+[color=#000080; ]esi[/color]*[color=#008c00; ]4[/color][color=#008c00; ]+160375[/color]] 
[span class='postcolor']
Жаль, у него не хватило интеллекта ту же фигню со сверткой реализовать :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
Это сообщение редактировалось 30.05.2003 в 11:35

Balancer

администратор
★★★★★
Вот крестьянин - тот в политике сильней
Он в деревне хрен растит на всю страну
Чтоб кормить соседских уток и свиней
И сограждан не поднявших Целину
...

:)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Jameson>Ничего, и более новые игры есть хорошие. Или моменты в них.

Преимущественно - моменты. У меня в Unreal был примерно подобный случай. Тоже с шахтой лифта :) Только ещё прикольнее было. Я понемногу, мелкими "шажками" подхожу к ней, чтобы внутрь заглянуть. Как можно ближе. За спиной толпа народа, так что я прикола ради от каждого шажка слегка так прикрикиваю - "а!... а!"... И с последним шагом - срываюсь таки в шахту! прикрикивание автоматически переходит в сдавленный вопль "аааааааа!" :)

Кстати, в реале, вспоминая себя впоследствии, в экстремальных ситуациях угрозой жизни не только не ору, а даже не матерюсь, вообще словно ресурсов у мозга на речь не остаётся, всё на перебор всяких вариантов и анализ ситуации уходит :) А вот в игрушках - бывает, что и матерюсь зверски :)))
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Весь прикол в том, что в Опере - всё ок. А раскраска - банальная, через span/style/color. Надо исходники колорера перешерстить и всё в вид font/color прегнать. Хоть и устаревший тип подкраски, но менее глючный :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★


А! Нашёл! Блин, доска, конечно, мощная (форум), но писатели по уровню кода - ПТУ-шники... :( Сейчас должно быть ок и в других браузерах. Опера просто ошибки сама исправляет :)


Осталось только ещё приличное редактирование для не-WYSIWYG-браузеров добавить и совсем всё хорошо будет...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
asoneofus>Хе, это 40 разрядов, вообщето :)

Тогда уж 64 :D ASCIIZ - сон разума :) Счётный байт - тоже. :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
А у меня отступы всегда по 4 пробела (один "новый" TAB :)), и на один-два пробела компилятор ещё ругается.

Кстати, к этой идее у меня отношение сложно. С одной стороны, по молодости, сам такого хотел, другой стороны, очень уж привык к нынешней свободе трактовки перевода строки как пробела. Особенно практика Форта в этом отношении на меня повлияла :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
>после чего амеры расстроились, из Вьетнама ушли, и наступил всеобщий мир и благоденствие :D

Фиг его знает, что там в 7-й серии будет :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Строка в 256 символов - это несерьёзно! :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
asoneofus>каунт(0)t(1)e(2)s(3)t(4)\0(5) - 6 байт :)

Кстати, именно такой формат строки в SP-Forth :) Они и как родные для Форта, счётные, работают, так и в Win32-вызовы сразу передавать можно :)

Хотя я мало того, что счётные строки в Форте пережитком социалистических времён считаю, так и даже размещение строк на общем стеке считаю сном разума :) Под каждый тип - отдельный стек!
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Мировое Зло неистребимо! Так что всё ещё будет! Вот родится ещё у Люка ребёнок - посмотрим, кого он истреблять начнёт :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
А разве в каком-то ЯВУ есть такие стандартные средства? :)

Хотя, в PHP, кажется, появилось недавно. Не смотрел. Но дело не в том. Список доменов - 12Мб. Если загрузить всё сразу... Не сдохнет ли машинка? :) Одних списков слов - 11Мб. А их-то уж точно придётся грузить в память :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Гм. Всё, что знаю связанного с компьютерами и Мюнхеном, что там 14 тыс. компов мэрия на Linux переводит. И что? У нас в Москве и то комптютеров под Windows раз в 20 больше :) Если не в 50...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Сегодня ошибочку исправил, так что всё должно подкрашиваться. Кроме... Z80 :( Он почему-то не пашет... Буду разбираться...
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Навскидку - будет медленнее. Поскольку читать файл всё равно придётся, а потом ещё и анализировать его отдельно. Двойная работа.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
А я гестуры все сразу вырубаю. Я слишком вольно обращаюсь с мышкой, всё равно, что с продолжением руки, поэтому часто её дёргаю без надобности, даже с нажатой кнопкой. Так что эти гестуры вечно ложно срабатывают :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
TEvg>А это наш закат

Класс. И на Марс летать не надо. Только скафандр всё равно нужен.

Впрочем, в Москве тоже... Блин, у меня окна на Ленинградку... Жара, а окна закрывать нужно. Иначе - облака выхлопных газов... :) Что прикольно, внизу воздух нормальный, а вот на моём 8-м этаже дышать нечем.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Класс! Это в Москве будет 77%? Ни разу в жизни солнечного затмения, даже частичного не видел! :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Doom безусловно хорош! Геймплей один из лучших. Точнее - Doom II (1-й был похуже).

А вот Half-Life - совсем не первый 3D-action с сюжетом. В вышеупомянутом T:FS сюжет был ещё круче :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Andy-Andrei>Прикольно, но мало. Очень мало. Хотелось бы еще, честно говоря.

Дык, итак, на мой не слишком профессиональный взгляд, работа титаническая проделана! :) Нет, Мюллер, разглядывающий "Плейбой" в комнате с кремлёвскими башнями за окном или плакат "Матрицы" за спинами Штирлица и Шелленберга - это нечто... :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
moderatorial

Вуду>TEvg
Вуду>Естественно, что я с тобой не общаюсь до тех пор, пока ты не осознаешь, что вёл себя как свинья.



[+] за оскорбление собеседника.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
http://airbase.ru/forums/index.php?act=ST&...90entry238964

Вуду>TEvg
Вуду>Естественно, что я с тобой не общаюсь до тех пор, пока ты не осознаешь, что вёл себя как свинья.



[+] за оскорбление собеседника.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Кстати, на тему отчётности - все предыдущие поступления (на сборку сервера) указаны в http://airbase.ru/support/money/

Могу только добавить, что сервер обошёлся в 25000руб (материнка) + $1595 (всё остальное) + $25 (SCSI-кабель для backplane) + $500 (трафик (в т.ч. долги) и арендная плата по апрель). Так что сколько я от себя докладывал - считайте сами :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Всё. Забил wrk.ru :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
F-111 - первый серийный с крылом изменяемой стреловидности :)

Ну а B-1 - просто красивый :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
moderatorial

Вуду>>Жорик, ну не надо с глубокомысленным видом пытаться обсуждать
George>Вуду, я с вами на брудершафт не пил, поэтому давайте без фамильярничания и коверкания ников

Вуду - [*] за использование обращения, раздражающего собеседника.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
http://airbase.ru/forums/index.php?s=&act=...ду>>Жорик, ну не надо с глубокомысленным видом пытаться обсуждать
George>Вуду, я с вами на брудершафт не пил, поэтому давайте без фамильярничания и коверкания ников

Вуду - [*] за использование обращения, раздражающего собеседника.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
>>Слизан с Миг-25.
>Не делайте мне смешно...

Уф... Сколько раз уже эту тему обсасывали в форуме... Уже даже не смешно...

>>Ну а B-1 - просто красивый
>Ну почему-же, первый стратег нового поколения. Их, правда, всего два :)

Дык, всё равно неудачный... Особенно по началу :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Дык, он не твой, а Guest'а :) Потому только модератор/администратор его редактировать может. Логиниться нужно перед постингом :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Ох, блин, повешусь я с этой раскраской... Пошёл зарбираться :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
>Вот вариант

Блин. Ничего не понимаю. В моих примерах с раскраской всё ок. :( Сейчас из IE попробую.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★


Так и не понял, с чего его заглючило. Может, с того, что [code] блок в визуальном редакторе в италике оказался... Муть какая-то... Ладно, разберусь ещё. Пока - так поправил.


ComputerMage>   char buf[256]; // Ненавижу buffer overflows :D


А что делать... C++... :) А делать на каждой итерации new/delete... Глядишь, ещё и тормознее, чем на Perl выйдет :D


>Не проверял, но работать должна. Сортировать ничего не надо, потому как в map обычно уже встроены rb-trees, и все ключи отсортированы в восходящем порядке.


Нужна сортировка по значению и в убывающем порядке :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Сколько людей, столько предпочтений :) Мне второй, хотя и прошёл его, категорически не понравился после первого :) Во-первых, полнейшей физической безграмотностью, во-вторых - затянутостью боевых миссий :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
А вот вам и Z80 :) Спасибо автору Colorer'а - оперативно отзвался :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Начиная от дальности броска под водой, кончая сонарами на суше :) Хотя там что-то ещё более абсурдное было, да я уже не помню...

Ну а на счёт мрачности... Ну, вылетай ты в первом УФО на задания в сумерках :)

Короче, каждому нравится своё :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Пока переименовыванием может заниматься только модератор или администратор. Есть под этот форум хак, позволяющий это сделать, но у меня ещё руки не дошли его прикрутить.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Прикрутил. Заодно увеличил длину заголовка и описания до 255 симоволов с 50 и 40, соответственно.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
http://airbase.ru/forums/index.php?s=&act=...=4&t=20794&st=0

Теперь длина заголовка топика и описания не 50 и 40 символов, соответственно, а 255.

При редактировании первого сообщения можно исправить заголовок и/или описание топика.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Это я хак репутации устанавливал. Теперь можно народу голоса раздавать :) См. слева в инфе о пользователе :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Самый правильный юникод - UTF-8. А там - вообще непонятно, какая длина символа :D От одного до четырёх :D
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
asoneofus>Эха... :) Как Кроныча плющит :)

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

Balancer

администратор
★★★★★
А ты не дотянуть до этого времени пытайся, а ляг пораньше :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

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

Balancer

администратор
★★★★★
Alesandro>и игрушка, где нужно играть за четверых, один из довольно свежая, но в упор не помню названия. :(

Я помню игрушку, где за шестерых нужно было играть. Space Hulk. Но она довольно старая :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Механизм визуального редактирования по умолчанию выключен. Пусть включают те, кто умеет им реально пользоваться :D

У тех, у кого он выключен - должно, наконец, корректно работать и цитирование и редактирование. В смысле br-ок.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
Эх, у меня классный перевод Fallout 2 был... Может, и сейчас жив - его Каррибеан брал поиграться :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

Balancer

администратор
★★★★★
TT>Хотя форум тут - просто п...

?
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru