Home
OCaml (aka Objective Caml), а также прочие ML'и, F#, Coq, etc
ocaml@conference.jabber.ru
Среда, 13 ноября 2013< ^ >
f[x] установил(а) тему: OCaml / ОКэмл / Камль -- http://ocaml.org/ | Камло - http://camlunity.ru/ | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ | Fight FUD with fire | Мойте руки перед чатом | KEEP CAML AND CURRY ON | Coq далее доказывает в coq@c.j.r | F# - де-факто онтопик
Конфигурация комнаты
Участники комнаты

GMT+4
[00:10:42] gfv вышел(а) из комнаты: Disconnected: connection closed
[00:36:18] Kakadu вышел(а) из комнаты
[01:06:03] komar вышел(а) из комнаты: Replaced by new connection
[01:06:03] komar вошёл(а) в комнату
[01:54:31] ftrvxmtrx вышел(а) из комнаты
[01:54:37] Zbroyar вошёл(а) в комнату
[02:15:25] Typhon вышел(а) из комнаты
[02:26:27] Zbroyar вышел(а) из комнаты
[02:26:43] Zbroyar вошёл(а) в комнату
[02:39:59] strobegen вышел(а) из комнаты
[03:26:19] Typhon вошёл(а) в комнату
[03:42:24] gfv вошёл(а) в комнату
[03:43:34] Typhon вышел(а) из комнаты
[04:19:23] gfv вышел(а) из комнаты: offline
[05:05:59] ftrvxmtrx вошёл(а) в комнату
[05:18:36] klapaucius вышел(а) из комнаты
[05:49:06] komar вышел(а) из комнаты: Replaced by new connection
[05:49:07] komar вошёл(а) в комнату
[06:00:43] komar вышел(а) из комнаты: Replaced by new connection
[06:00:43] komar вошёл(а) в комнату
[06:07:27] komar вышел(а) из комнаты: Replaced by new connection
[06:07:27] komar вошёл(а) в комнату
[06:25:51] strobegen вошёл(а) в комнату
[06:33:34] f[x] вошёл(а) в комнату
[06:35:25] <f[x]> gds: ты так логично излагаешь что я на секунду даже поверил :)
[06:36:54] <f[x]> но пока что получается
List.exists : allocated   3.1MB, heap      0B, collect  0    0     1, elapsed 7.560 sec
Array.exists : allocated   3.2MB, heap      0B, collect  0    0     1, elapsed 8.743 sec
[06:40:34] Комната запущена
[06:40:34] Zbroyar вошёл(а) в комнату
[06:40:35] ForNeVeR вошёл(а) в комнату
[06:40:44] tilarids вошёл(а) в комнату
[06:41:13] gds вошёл(а) в комнату
[06:45:12] dlebedev вошёл(а) в комнату
[07:22:54] tilarids вышел(а) из комнаты: Machine going to sleep
[07:53:37] ermine вошёл(а) в комнату
[08:27:45] tilarids вошёл(а) в комнату
[09:05:07] komar вошёл(а) в комнату
[10:50:27] f[x] вошёл(а) в комнату
[10:55:34] tilarids вышел(а) из комнаты: Machine going to sleep
[11:12:58] irezvov вошёл(а) в комнату
[11:35:35] ADEpt вошёл(а) в комнату
[11:45:32] klapaucius вошёл(а) в комнату
[12:05:09] Kakadu вошёл(а) в комнату
[13:04:24] Typhon вошёл(а) в комнату
[13:20:03] Kakadu вышел(а) из комнаты
[13:22:08] aleksey вошёл(а) в комнату
[13:22:28] Kakadu вошёл(а) в комнату
[13:27:17] <aleksey> f[x]: а покажи исходник бенчмарка
[13:32:06] <f[x]> open ExtLib
let a = Array.init 10_000 (fun i -> i)
let l = List.init 10_000 (fun i -> i)
let () =
  Measure.show "List.exists" (fun () -> for i = 1 to 100_000 do ignore (List.exists (fun x -> x = i) l) done) ();
  Measure.show "Array.exists" (fun () -> for i = 1 to 100_000 do ignore (Array.exists (fun x -> x = i) a) done) ();
  ()
[13:32:24] <f[x]> Measure -> http://ygrek.org.ua/p/code/measure.ml
[13:32:53] <f[x]> Array.exists свежатинка из extlib svn :
exception Exists
let exists p xs =
  try
    for i = 0 to Array.length xs - 1 do
      if p xs.(i) then raise Exists
    done; false
  with Exists -> true
[13:33:09] <f[x]> причём unsafe_get даёт замедление %)
[13:33:41] <f[x]> (но как мы видели ранее в этих микробенчмарках перемещения кода могут больше влиять на результат чем сам код)
[13:34:25] <f[x]> старый exists был рекурсией и чуть медленнее
[13:35:36] <f[x]> aleksey: ^^
[13:36:20] <f[x]> gds: требую объяснений (с упоминанием выравниваний кэш линий относитеьно фаз луны)
[13:40:54] <Zbroyar> Круто
[13:41:02] <Zbroyar> Хто буде наступним?
[13:42:02] <f[x]> я пока сказать не могу, ещё не выбрал
[13:43:36] <Zbroyar> :-))))))
[13:46:39] <aleksey> f[x]: а если до 100к увеличить размер?
[13:47:58] <gds> f[x]: объяснение одно: безблагодатность.
[13:48:43] <f[x]> aleksey:
List.exists : allocated   3.1MB, heap      0B, collect  0    0     1, elapsed 16.746 sec
Array.exists : allocated   4.6MB, heap      0B, collect  0    0     2, elapsed 19.632 sec
[13:49:02] <ADEpt> У меня перекос еще круче
[13:49:19] <ADEpt> Estimated testing time 20s (2 benchmarks x 10s). Change using -quota SECS.
┌──────────────┬──────────┬──────────┬──────────┬──────────┬────────────┐
│ Name         │ Time/Run │  mWd/Run │ mjWd/Run │ Prom/Run │ Percentage │
├──────────────┼──────────┼──────────┼──────────┼──────────┼────────────┤
│ List.exists  │    3.11s │ 400.01kw │    9.21w │    9.21w │     57.10% │
│ Array.exists │    5.45s │ 900.02kw │   10.80w │   10.80w │    100.00% │
└──────────────┴──────────┴──────────┴──────────┴──────────┴────────────┘
[13:49:33] Kakadu вышел(а) из комнаты: Replaced by new connection
[13:49:35] Kakadu вошёл(а) в комнату
[13:50:00] <ADEpt> реализации exist тривиальны и практически идентичны
[13:50:16] <aleksey> тогда требую .s :)
[13:50:42] <aleksey> в смысле ассемблерный код Array.exists
[13:51:21] Kakadu вышел(а) из комнаты
[13:51:35] <f[x]> это не по-гурски!
[13:51:39] Kakadu вошёл(а) в комнату
[13:52:19] Kakadu вышел(а) из комнаты
[13:57:32] <f[x]> aleksey: http://paste.in.ua/9015/
[13:57:42] <f[x]> многабуков
[13:59:17] Kakadu вошёл(а) в комнату
[14:02:52] <gds> а вот почему многабукав -- это интересный вопрос.  должно было быть попроще, по идее.
[14:03:17] <f[x]> угу, подозрительно
[14:24:40] <aleksey> а замени (fun x -> x = i) на (fun x -> x = 50000)
[14:30:57] <f[x]> List.exists : allocated    216B, heap      0B, collect  0    0     0, elapsed 17.302 sec
Array.exists : allocated   1.5MB, heap      0B, collect  0    0     0, elapsed 22.459 sec
[14:32:00] <aleksey> мдэ
[14:32:42] <f[x]> зачем аллокэйтит - незрозумило
[14:33:20] <f[x]> (raise (makeblock 0 (field 2 (global Q!)))) 0a))
[14:33:24] <f[x]> хм
[14:33:40] <f[x]> там сейчас в мантисе как раз тикет чтобы не аллокэйтить константные исключения
[14:35:01] <f[x]> если сравнивать с несуществующим элементом то не аллокейтит ничего, но всё равно медленней
[14:35:17] <f[x]> надо ещё в perf посмотреть
[14:59:03] dlebedev вышел(а) из комнаты
[15:10:18] f[x] вышел(а) из комнаты
[15:21:29] <aleksey> ну исключение оно один раз аллокейтит
[15:21:37] <aleksey> фиг с ним
[15:51:33] Kakadu вышел(а) из комнаты
[17:01:04] ForNeVeR вошёл(а) в комнату
[17:03:15] komar вышел(а) из комнаты: Replaced by new connection
[17:03:21] komar вошёл(а) в комнату
[17:30:45] ftrvxmtrx вошёл(а) в комнату
[18:42:19] strobegen вошёл(а) в комнату
[18:45:45] f[x] вошёл(а) в комнату
[19:16:19] f[x] вышел(а) из комнаты
[19:35:48] Zbroyar вышел(а) из комнаты
[19:36:53] irezvov вышел(а) из комнаты: Replaced by new connection
[19:36:56] irezvov вошёл(а) в комнату
[19:52:09] tilarids вошёл(а) в комнату
[19:53:53] Zbroyar вошёл(а) в комнату
[20:39:24] tilarids вышел(а) из комнаты: Machine going to sleep
[20:39:31] irezvov вышел(а) из комнаты: Replaced by new connection
[20:39:32] irezvov вошёл(а) в комнату
[21:58:11] tilarids вошёл(а) в комнату
[22:29:24] Zbroyar вышел(а) из комнаты
[22:46:31] Typhon вышел(а) из комнаты
[22:57:07] ADEpt вышел(а) из комнаты
[23:05:16] ADEpt вошёл(а) в комнату
[23:31:33] ermine вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!