
Kirill
16.12.2016
11:01:31

Dmitri
16.12.2016
11:01:35
вот ты давно кодить начал?

Kirill
16.12.2016
11:02:51
А вы слышали о новой IDE от jetbrains?

Google

Denis
16.12.2016
11:02:54
Мне кажется, что я почувствовал бы, что более менее выучил, когда получится что-то на языке сделать, относительно сложное :) не из книжных примеров. Что может замутить юный падаван, прочитавший ритчи от сих и до сих?:)

Dmitri
16.12.2016
11:03:10

Vladislav
16.12.2016
11:03:33
Никакой разницы 2m30 -> 2m28
package main
import (
"fmt"
"math/rand"
)
var set = make(map[int64]bool)
func main() {
for i := 0; i <= 1000000000; i++ {
set [rand.Int63() % 30] = true;
}
fmt.Printf("%v\n",set)
}
процентов на 30 шустрее стало

Dmitri
16.12.2016
11:04:28
ну вот, я же говорил, у тебя в Go 1) какой-то медленный рандом 2) нет числа 42

Denis
16.12.2016
11:12:22
Ну вот( Думал приду в чат про Го, тут мне расскажут какой охренетительный язык, учи конечно же, а хрен там:))

Dmitri
16.12.2016
11:12:57
в чатах выживают либо тролли, либо реалисты.
Учить-то чо его не учить. Он за пару дней учится, по хорошему

Vladislav
16.12.2016
11:13:41
он простой как кирпич

Dmitri
16.12.2016
11:13:42
практика применения - это уже совсем другая тема

Roman
16.12.2016
11:13:55

Dmitri
16.12.2016
11:14:15
собственно, кирпичи бывают разные... Го проще, короче. Он всегда одинаковый

Vladislav
16.12.2016
11:14:19

Google

Dmitri
16.12.2016
11:14:51

Roman
16.12.2016
11:15:28

Dmitri
16.12.2016
11:16:03
Собственно, это его главная фича.
Го не без граблей, но, ввиду его компактности, при активном использовании ты на все за месяцок наступить успеешь

Daniel
16.12.2016
11:20:43
> В Go один метод генерации - он случайный. В Java куча методов, но во всех туториалах - псевдослучайный
это что за херню я только что прочел?

Vladislav
16.12.2016
11:20:47
а потом на этих рандомайзерах делают шифрование??

Мерлин
16.12.2016
11:21:28
чо

Roman
16.12.2016
11:27:27
Есть аналогичная стандартная функция на Go?
Кстати, это надо проверить.

Kirill
16.12.2016
11:28:44

Roman
16.12.2016
11:30:10
Блин, Go тоже дает пвсевдорандом?

Kirill
16.12.2016
11:30:26
открыть секрет?

Мерлин
16.12.2016
11:31:32
станартный генератор ПСЧ в go - потокбезопасный
Даже если его дёргать из одной рутины, то он будет колошматить мьютекс почём зря

Roman
16.12.2016
11:31:40
Тогда вывод неутешительный, стандратный Random Go в 5 раз медленнее Java.

corpix
16.12.2016
11:34:15
Про какие PRNG вы говорите? Для криптографии или нет?

Мерлин
16.12.2016
11:34:46

Vladislav
16.12.2016
11:36:29

Мерлин
16.12.2016
11:37:01

Roman
16.12.2016
11:37:07
Тогда вот такой еще тест - вместо
set [rand.Intn(30)] = true;
поставил set [1] = true;

Google

Vladislav
16.12.2016
11:37:45

Мерлин
16.12.2016
11:37:59
это да

Roman
16.12.2016
11:37:59
45 секунд на Go и 0.17 секунд на Java ???

Мерлин
16.12.2016
11:38:28

Roman
16.12.2016
11:38:32
Java компайлер тупо цикл развернул при компиляции :)

Мерлин
16.12.2016
11:38:52

corpix
16.12.2016
11:39:51
Про какие PRNG вы говорите? Для криптографии или нет?
Я вобщем то спрашивал лишь для того чтобы сказать что в некоторых случаях ещё используют CSPRNG на основе, например AES врежиме CTR. Учитывая поддержку AES на аппаратном уровне должно быть довольно быстро. Но потокобезопасность остаётся на плечах разработчика

Evgenij
16.12.2016
11:41:48

Roman
16.12.2016
11:48:04
Код на Java: https://gist.github.com/begetan/45118ec0cf6b8907b8b9855af5cad6b0

Evgenij
16.12.2016
11:51:13
А гошный?

Daniel
16.12.2016
11:51:40
чтобы они друг другу 100% соответствовали

Roman
16.12.2016
11:52:56
На мапах Джаву?

Evgenij
16.12.2016
11:54:09
Согласен мэп и хэш - скорость доступа разная
На мапах Джаву?
Приведи к одной хоть структуре -а потом сравнивай(для начала)

Roman
16.12.2016
11:59:13
https://gist.github.com/begetan/1a6dab06082e41da4fe493fb43aaba5e

TheRainwildsKeeper
16.12.2016
11:59:45

Roman
16.12.2016
12:00:36

Daniel
16.12.2016
12:02:11
ну вот пока ты это не предъявишь - тебе будут тыкать это под нос

Evgenij
16.12.2016
12:02:20
Ну посмотри скорость доступа к структуре на основе хэш и например на основе линейного

Google

Evgenij
16.12.2016
12:03:49
если не ошибаюсь 1-лог н 2-н ,и чем больше элементов разница очень бросается в глаза

Мерлин
16.12.2016
12:04:42
(pprof) top10
90.30s of 91.55s total (98.63%)
Dropped 4 nodes (cum <= 0.46s)
Showing top 10 nodes out of 13 (cum >= 3.76s)
flat flat% sum% cum cum%
27.70s 30.26% 30.26% 44.10s 48.17% runtime.mapassign1
23.03s 25.16% 55.41% 39.94s 43.63% math/rand.(*Rand).Int31n
10.75s 11.74% 67.15% 10.75s 11.74% math/rand.(*rngSource).Int63
8.78s 9.59% 76.74% 8.78s 9.59% runtime.aeshash64
3.86s 4.22% 80.96% 3.86s 4.22% runtime.memequal64
3.77s 4.12% 85.08% 91.50s 99.95% main.main
3.69s 4.03% 89.11% 43.63s 47.66% math/rand.(*Rand).Intn
3.16s 3.45% 92.56% 13.91s 15.19% math/rand.(*Rand).Int63
3s 3.28% 95.84% 16.91s 18.47% math/rand.(*Rand).Int31
2.56s 2.80% 98.63% 3.76s 4.11% runtime.typedmemmove


Roman
16.12.2016
12:10:18
import java.util.*;
public class Test {
public static void main(String[] args) {
Random rand = new Random(47);
Map<Integer,Boolean> m =
new HashMap<Integer,Boolean>();
for(int i = 0; i < 1000000000; i++) {
m.put(rand.nextInt(30),Boolean.TRUE);
}
System.out.println(m);
}
}

Daniel
16.12.2016
12:10:28
да

Roman
16.12.2016
12:10:30
Так пойдет? Полный аналог

Admin
ERROR: S client not available

Daniel
16.12.2016
12:10:35
полный эквивалент
и че по скорости?

Roman
16.12.2016
12:10:46
Положу на гист
23 вместо 25 сек, еще быстрее :)
Без разницы вобщем

Evgenij
16.12.2016
12:12:53
Может лучше сравнить aray с array - тупо линейные)))

Daniel
16.12.2016
12:13:29
зачем?
нам не надо линейные
но явный будет быстрее, инфа 100%

Evgenij
16.12.2016
12:14:13
В го я так знаю мапа не гарантирует порядок- про джава не помню)))

Daniel
16.12.2016
12:14:23
какой порядок
коллеги
ну что вот я читаю тут
че за херня

Google

Roman
16.12.2016
12:14:44
В мапе ключ, там нет порядка

Evgenij
16.12.2016
12:15:02
Ах да я ошибся - извеняюсь))

Roman
16.12.2016
12:16:32
Daniel что написать в цикл, чтобы Java его не разворачивала?
Хотя Go без Random в цикле прбегает за 30 секунд, а Java c Random за 23
Вот этот код set [rand.Int31() % 30] = true; вместо set [rand.Intn(30)] = true; ускорил с 2m30 до 2m16


Vladislav
16.12.2016
12:25:56

Daniel
16.12.2016
12:28:18
еще раз
если вам надо быстро - берите jvm
только вам не надо быстро
обычно не надо быстро

Roman
16.12.2016
12:30:31

Vladislav
16.12.2016
12:31:48
2m10 вместо 2m16
а если создать без мьютекса (r := rand.New(rand.NewSource(42)))
и заюзать? (set [r.Int63() % 30] = true;)

Roman
16.12.2016
12:41:56

Morran
16.12.2016
12:42:49
а кто-нибудь знает нормальную либу для xmpp?

Roman
16.12.2016
12:45:37
Было познавательно. Обязательно теперь нужно питонистов дернуть!