vs C

2015-01-19 11:01
ufm: (Default)
[personal profile] ufm

Интересно, это я «не умею их готовить», или с 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.

(no subject)

Date: 2015-01-19 16:47 (UTC)
From: [identity profile] ufm.livejournal.com
Всё равно странно.
1000 2450398 2915124 5365522 [26 7 9 8 30 51 70 116 145 16 24 89 27 8 18 107 23 71 0 155]
1000 2447583 2902797 5357951 [53 5 39 40 1 99 77 21 46 72 54 38 75 29 29 39 59 91 111 22]
1000 2429637 2890572 5345370 [58 15 59 17 143 55 136 37 18 22 36 39 15 59 65 31 86 11 7 91]

Intel(R) Xeon(R) CPU E31230 @ 3.20GHz
Single Thread Rating: 2111
Чем посмотреть память под фрёй - я хз.

Причем С на спинлоках - да. Как Go у меня на линуксе:
0000000 83 86 77 15 93 35 86 92 49 21 62 27 90 59 63 26 40 26 72 36 = 1138
8817810 58 58 52 53 58 16 52 69 57 67 59 71 56 80 57 49 64 42 57 63 = 1138
8550864 81 58 70 53 68 16 69 69 45 67 37 71 50 80 47 49 50 42 53 63 = 1138
8706703 47 58 56 53 53 16 50 69 30 67 50 71 76 80 98 49 71 42 39 63 = 1138

А на мутексах - чуть быстрее чем у тебя.
0000000 83 86 77 15 93 35 86 92 49 21 62 27 90 59 63 26 40 26 72 36 = 1138
5689270 61 77 82 46 31 64 61 82 41 58 25 92 45 64 54 64 41 71 17 62 = 1138
5703690 40 77 53 46 70 64 18 82 58 58 37 92 51 64 27 64 58 71 46 62 = 1138
5716883 68 77 33 46 5 64 33 82 60 58 45 92 53 64 79 64 47 71 35 62 = 1138

(no subject)

Date: 2015-01-19 17:03 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
> Чем посмотреть память под фрёй - я хз.

dmidecode
/Memory Device

> Причем С на спинлоках - да. Как Go у меня на линуксе:
> А на мутексах - чуть быстрее чем у тебя.

ну тут опять же, возможно следует вернуться к вопросу об энтропии.
ну и я вот совсем не знаю как и откуда ее go берет.
(у сишной программы следующий алгоритм
        /* Must be in [1, 0x7ffffffe] range at this point. */
        hi = *ctx / 127773;
        lo = *ctx % 127773;
        x = 16807 * lo - 2836 * hi;
        if (x < 0)
                x += 0x7fffffff;
        *ctx = x;
        /* Transform to [0, 0x7ffffffd] range. */
        return (x - 1);

)
я вообще goшную программу не понимаю -- там семь тредов (при четырех-то ядрах), активно выполняются пять (из них три -- очень активно). в среднем тред 50% времени жует сопли.

(no subject)

Date: 2015-01-19 18:22 (UTC)
From: [identity profile] ufm.livejournal.com
Ну семь тредов при 4 ядрах - это небось гипертрединг. :)
Три из них - сама задача.
Еще 4 - скорее всего сам go использует.

(no subject)

Date: 2015-01-19 19:20 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
не, тут гипертрединга нет.
но похоже по этим тредам мигрируют гошные треды.
иначе я не могу объяснить предположить почему больше двух тредов проц жрут

(no subject)

Date: 2015-01-19 17:07 (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
кстати, а спилоки на линукса что кажут?

(no subject)

Date: 2015-01-19 18:13 (UTC)
From: [identity profile] ufm.livejournal.com
У меня сейчас этропии набралось, поэтому вариант на мутексах - 6M, на спинлоках - 7M.