2015-01-19

ufm: (bald-headed)
Взял с розеты два исходника. Один на Go (http://rosettacode.org/wiki/Atomic_updates#RWMutex) и один на D (http://rosettacode.org/wiki/Atomic_updates#D). Дополил до более-менее одтнакового алгоритма.
В результате вариант на D показывает в районе 6M операций в секунду, вариант на Go — в районе 8M.
Вот как они это делают?
Кстати, варианта на rust-е — нет. Может есть кто из фанатов раста — сделает?

Вариант на D: http://pastebin.com/QJZaz8di
Вариант на Go: http://pastebin.com/aVJMBueT

Версии компиляторов:
И там и там — текущие релизы.
Go — go version go1.4 linux/amd64
D — DMD64 D Compiler v2.066.1

Originally published at U.F.M's Homepage. You can comment here or there.

vs C

2015-01-19 11:01
ufm: (Default)

Интересно, это я «не умею их готовить», или с pthread действительно так всё плохо?
Приблизительно 2.5М
Впрочем — было так:

0000000 83 86 77 15 93 35 86 92 49 21 62 27 90 59 63 26 40 26 72 36 = 1138
2578416 45 68 50 62 67 61 57 54 51 64 47 53 61 67 63 67 54 39 66 42 = 1138
5917909 14 80 68 49 56 55 69 44 68 32 77 42 74 63 74 49 54 20 63 87 = 1138
4503224 40 69 58 55 55 56 53 52 54 54 49 53 48 59 49 62 74 73 72 53 = 1138
2627799 79 71 60 53 56 102 45 21 67 32 41 46 56 38 49 73 55 61 78 55 = 1138
2611552 49 48 49 57 51 72 46 53 56 38 52 47 63 79 69 68 49 70 71 51 = 1138

Так что я допускаю, что я действительно не умею готовить.
код — http://pastebin.com/WHfi7hvQ
компилировал так: gcc -O3 -pthread c2.c -o c2
Thread model: posix
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

Originally published at U.F.M's Homepage. You can comment here or there.