Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 28 октября 2009< ^ >
ygrek установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся! | release crap | voice по запросу
Конфигурация комнаты

GMT+3
[00:02:19] ygrek вышел(а) из комнаты
[00:03:18] <gds> лично мне за бенчмарки не обидно :)
хотя там явно накосячили с алгоритмом, судя по времени выполнения.
[00:25:51] Śephiroth вошёл(а) в комнату
[00:43:03] Śephiroth вышел(а) из комнаты
[03:25:01] john вышел(а) из комнаты: Replaced by new connection
[03:25:02] john вошёл(а) в комнату
[04:02:42] john вышел(а) из комнаты
[04:32:29] john вошёл(а) в комнату
[04:36:34] sevenov вышел(а) из комнаты
[05:41:46] <sceptic> Мне кажется работа с потоками не очень эффективная.
[06:01:07] sevenov вошёл(а) в комнату
[06:01:46] sevenov вышел(а) из комнаты
[06:02:14] sevenov вошёл(а) в комнату
[07:44:27] geovit вошёл(а) в комнату
[08:13:08] gds вышел(а) из комнаты
[08:37:10] Typhon вошёл(а) в комнату
[08:57:19] gds вошёл(а) в комнату
[09:50:30] ygrek вошёл(а) в комнату
[10:24:20] f[x] вошёл(а) в комнату
[10:58:12] geovit вышел(а) из комнаты
[11:00:32] <f[x]> ну дык у камлевской версии 6млн context switch'ей, а у ruby например 3000
[11:00:52] <f[x]> запустил в байткоде с vmthread - отработало за 4 секунды, но результаты неравномерные
[11:01:09] <f[x]> (в нативе с системными тредами - 30с)
[11:01:37] <f[x]> ещё надо будет jocaml проверить
[11:14:40] <f[x]> поставил yield, стало почти хорошо
[11:14:49] john вышел(а) из комнаты
[11:15:38] john вошёл(а) в комнату
[11:22:30] f[x] вышел(а) из комнаты: Replaced by new connection
[11:22:31] f[x] вошёл(а) в комнату
[11:27:24] geovit вошёл(а) в комнату
[11:39:03] geovit вышел(а) из комнаты
[11:41:18] geovit вошёл(а) в комнату
[12:00:38] Mon вышел(а) из комнаты
[12:00:51] Mon вошёл(а) в комнату
[12:01:24] Mon вышел(а) из комнаты
[12:01:28] Mon вошёл(а) в комнату
[12:02:13] <f[x]> вообщем добиться честности и скорости одновременно не получается
[12:07:18] <f[x]> о, получилось
[12:07:23] <f[x]> broadcast вместо signal
[12:08:25] <gds> интересно поглядеть результат.
[12:09:03] <f[x]> на 600к ускорилось в 5 раз
[12:09:37] <f[x]> Voluntary context switches: 1
Involuntary context switches: 61
[12:10:33] <f[x]> а то блин все интерпретируемые недопитоны юзают свой шедулер, а камло системными потоками гнобят
[12:11:21] <Typhon> питон шедулер не юзает свой, насколько я знаю
[12:12:04] <f[x]> недопитон - это руби :)
[12:12:32] <Typhon> а, ок :)
[12:12:55] <Typhon> тупанул, выше сообщения не прочел.
[12:15:23] <Typhon> f[x]: а где про механизм работы с тредами камлевый хорошо написано, не пожскажешь?
[12:16:33] <f[x]> нигде/в исходниках/по крупицам в maillist'ах/gds сейчас пишет в вики ( :) )
[12:17:35] <Typhon> оу, понятно :)
[12:18:11] <gds> да, надо бы изложить. про системные треды всё понятно, а вот vmthreads я даже при желании не изложу.
[12:19:10] <Typhon> я правильно понимаю, что если в нативный компилирую -- используются pthread, а если в байткод -- то вот эти загадочные пока для меня vmthreads ?
[12:20:30] <f[x]> интересно что с 100% на одном ядре второй лучший результат у vw в районе 60с (у меня сейчас где-то рядом получается), а лучший у ghc (третьена место!)
[12:20:52] <f[x]> Typhon: pthreads в байткоде тоже можно
[12:21:01] <f[x]> про это в мануале есть
[12:21:19] <Typhon> f[x]: да, это помню, но наоборот -- нини?
[12:21:30] <f[x]> загадочная вещь это шедулинг
[12:21:45] <f[x]> вот например инфа (не проверял) -- http://snipplr.com/view/19509/ocaml-memory-allocation-and-context-switching/
[12:22:02] <f[x]> Typhon: vmthreads в нативе - нельзя
[12:23:08] <Typhon> f[x]: угу, это спрашивал, ясно.
[12:24:01] <f[x]> но можно всякие lwt, cothreads, итп
[12:32:57] <f[x]> gds: вот дифф к коду с shootout: http://paste.defun.ru/m6d969c93
[12:49:46] john вышел(а) из комнаты
[13:02:45] Typhon вышел(а) из комнаты
[13:04:31] Typhon вошёл(а) в комнату
[13:24:52] Typhon вышел(а) из комнаты
[13:59:02] john вошёл(а) в комнату
[14:01:12] sevenov вышел(а) из комнаты
[14:01:50] sevenov вошёл(а) в комнату
[14:22:51] Typhon вошёл(а) в комнату
[14:29:21] sevenov вышел(а) из комнаты
[14:40:21] Typhon вышел(а) из комнаты
[14:44:50] sevenov вошёл(а) в комнату
[15:15:15] Typhon вошёл(а) в комнату
[15:21:12] Typhon вышел(а) из комнаты
[15:23:13] Typhon вошёл(а) в комнату
[15:39:42] Typhon вышел(а) из комнаты
[15:59:13] geovit вышел(а) из комнаты
[16:03:09] geovit вошёл(а) в комнату
[16:11:07] <f[x]> переписал на jocaml'е, код получился существенно короче и понятней, но раз в 100 медленней, причём с абсолютно диким потреблением виртуальной памяти - 15G на 6000
[16:21:52] <gds> а что там жрёт память?
[16:22:11] <f[x]> хотелось бы знать
[16:22:24] <f[x]> нечему там жрать память
[16:25:10] sevenov вышел(а) из комнаты
[16:29:39] Mon вышел(а) из комнаты
[16:29:50] Mon вошёл(а) в комнату
[16:37:01] Typhon вошёл(а) в комнату
[16:42:34] <Typhon> если кто работает с 16 битными int'ами, кто что использует для этого? ( массивы не планируются, так что Bigarray как-то не очень хочется)
[16:49:18] <animist> Typhon: что за работа требуется? Т.е. почему по задаче нельзя использовать просто int?
[16:50:28] <Typhon> animist: сетевой протокол реализация либо анализ.
[16:50:48] <Typhon> по спекам нужно unsigned 16int
[16:50:57] <f[x]> т.е. ввод/вывод
[16:51:19] <f[x]> bitstring
[16:51:45] <Typhon> http://code.google.com/p/bitstring/ оно?
[16:51:48] <f[x]> угу
[16:52:14] <Typhon> спасибо
[16:52:28] <f[x]> либо вручную собирать из байтов (есть готовые функции в ExtLib.IO)
[17:00:37] geovit вышел(а) из комнаты
[17:19:31] Typhon вышел(а) из комнаты
[17:19:50] sceptic вышел(а) из комнаты
[17:20:37] <gds> вместе deriving + pkg_extlib --
d:/gds/dev/overbld/b20090915/lib/site-lib/extlib\extLib.a(enum.o):fake:(.data+0x2a4): multiple definition of `camlEnum__frametable'
d:/gds/dev/overbld/b20090915/lib/deriving/lib\deriving.a(enum.o):fake:(.data+0x3a0): first defined here
убираю pkg_extlib --
Error: No implementations provided for the following modules:
ExtString referenced from sexpcommon.cmx
в рот ему ноги.
[17:20:39] Typhon вошёл(а) в комнату
[17:25:09] sceptic вошёл(а) в комнату
[17:25:32] <f[x]> gds: боян :) http://code.google.com/p/deriving/issues/detail?id=1
[17:25:45] <f[x]> я убираю enum из makefile'а deriving'а
[17:27:31] <gds> ясно, как-нибудь так и сделаю в будущем. но пока для этого модуля проще deriving убрать к чорту.
[17:27:40] <gds> для этого бинарника, т.е.
[17:29:26] gds вышел(а) из комнаты
[17:56:09] Typhon вышел(а) из комнаты
[17:56:48] Typhon вошёл(а) в комнату
[18:24:06] aloner2k вышел(а) из комнаты
[18:25:16] gds вошёл(а) в комнату
[18:44:11] gds бьётся головой об стену
[18:44:18] <gds> "You need to allocate the storage yourself (with malloc) but then, as
long as you properly set up the header and last field of the block as
OCaml does for its native strings, the runtime will use it without
problems. The GC will see that the block is outside the Caml heap and
won't try to manage it."
чому я сам до этого не додумался в своё время?..
[18:48:05] <f[x]> т.е. камлевский блок вне камлохипа? для zero-copy? но освобождать потом всё равно руками (или кастомным финалайзером)?
[18:53:47] <gds> можно выделить один раз на веки вечныя, например. освобождать или руками, или финалайзером, не суть важно.
самое интересное, что пример подобного -- модуль ancient -- был под глазами. и, более того, я сам писал низкоуровневый код, который специально обрабатывал случаи выхода за хип.
[19:04:51] <f[x]> https://alioth.debian.org/tracker/index.php?func=detail&aid=312034&group_id=30402&atid=413100
[19:06:59] <gds> а broadcast где -- где-то там тоже есть?
[19:07:38] <f[x]> gds: да, похоже для супер-пупер io это хорошее решение, буфер обычно живёт долго, а данные в нём недолго
[19:07:54] <f[x]> gds: угу, там есть
[19:15:48] Typhon вышел(а) из комнаты
[19:20:47] Tengiz69 вошёл(а) в комнату
[19:20:49] Tengiz69 вышел(а) из комнаты: Я выкладываю своё домашнее видео на http://gay.ru ;)
хочешь больше ссылок? спроси их в cool@conference.jabber.ru

[19:56:56] f[x] вышел(а) из комнаты
[20:03:43] Tengiz98 вошёл(а) в комнату
[20:03:46] Tengiz98 вышел(а) из комнаты: Я выкладываю своё домашнее видео на http://gay.ru ;)
хочешь больше ссылок? спроси их в cool@conference.jabber.ru

[20:13:50] Typhon вошёл(а) в комнату
[20:56:01] ermine сломала себе какую-то извилинку в мозгу
[20:56:24] <ermine> но в конце туннеля забрезжил отсвет от сияния сульци
[20:56:45] Tengiz39 вошёл(а) в комнату
[20:56:48] Tengiz39 вышел(а) из комнаты: продам 17 кг вазелина. почти без запаха. за 1 кг - 600 руб. по поводу покупки узнавайте в cool@conference.jabber.ru
[21:20:32] <gds> $ ocaml
        Objective Caml version 3.11.1
# #load "dynlink.cma";;
# #load "camlp4r.cma";;
        Camlp4 Parsing version 3.11.1
# value qwe ?(a=123) () = ();
value qwe : ~?a:int -> unit -> unit = <fun>
# value qwer = (qwe : ~?a:int -> unit -> unit);
Error: Parse error: [ctyp] expected after ":" (in [expr])
(подчёркнуты символы "~?")
странно.
[21:20:51] Tengiz5 вошёл(а) в комнату
[21:20:54] Tengiz5 вышел(а) из комнаты: секс без обизатильтв на 1 раз. можно М+М или М+М+М.
обращайтесь в cool@conference.jabber.ru

[21:44:26] Typhon вышел(а) из комнаты: Replaced by new connection
[21:44:29] Typhon вошёл(а) в комнату
[21:46:19] Typhon вышел(а) из комнаты: Replaced by new connection
[21:46:22] Typhon вошёл(а) в комнату
[23:01:19] ygrek вышел(а) из комнаты
[23:19:18] ygrek вошёл(а) в комнату
[23:27:06] <ygrek> дискриминация на этом вашем shootout'е --
native code + VM threads and I'd make the measurements.
Once upon a time we measured OCaml bytecode -
http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=ocamlb
[23:29:21] sceptic вышел(а) из комнаты
[23:31:55] sceptic вошёл(а) в комнату
[23:32:46] sceptic вышел(а) из комнаты
[23:32:51] sceptic вошёл(а) в комнату
[23:32:54] <gds> ну-ну, разные опции командной строки сувать можно, а байткод нельзя.
лично я бенчмарки от говна не отличаю.
[23:35:53] <ygrek> впрочем faq прямо говорит :
We will accept and reject languages in a capricious and unfair fashion
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!