
Kirill
24.05.2017
18:13:25

KrivdaTheTriewe
24.05.2017
18:13:39

Митко Соловец?
24.05.2017
18:13:41

Kirill
24.05.2017
18:14:08

Google

Митко Соловец?
24.05.2017
18:15:02
я принесу асинхронные извинения

Nikolay
24.05.2017
18:15:43

Kirill
24.05.2017
18:16:30

Nikolay
24.05.2017
18:16:53
ну так решайте лично

Kirill
24.05.2017
18:17:40
? кто-то не понимает сарказма

Mikhail
24.05.2017
18:18:40
чому жопа, сифор же быстрый
сфор не быстрый, а обычный вайл.
но он тут не при чем.
1. когда есть массив байт его засовать в другой массив надо не циклом, а System.arraycopy и это основной косяк этого куска кода
2. Bytes.toBytes это что за функция? как работает? (может важно, а может нет)
3. если хочется еще быстрее надо держать буфер Array[Byte](8) для всех элементов и в него айтем складывать, а его потом см. п. 1
4. если еще быстрее, то избавиться от буфера и сразу с оффсетом складывать дабл в итоговый массив

KrivdaTheTriewe
24.05.2017
18:19:38

Nikolay
24.05.2017
18:20:11

Mikhail
24.05.2017
18:20:18

KrivdaTheTriewe
24.05.2017
18:20:21

Mikhail
24.05.2017
18:21:33

KrivdaTheTriewe
24.05.2017
18:24:18

Google

KrivdaTheTriewe
24.05.2017
18:27:06
я и по остальным пунктам прав ?
val binArray =
new Array[Byte](vec.length * java.lang.Double.SIZE)
cfor(0)(_ < vec.length, _ + 1) { i =>
val tmp = Bytes.toBytes(vec.getDouble(i))
System.arraycopy(tmp,
0,
binArray,
i * java.lang.Double.SIZE,
java.lang.Double.SIZE)
}

Mikhail
24.05.2017
18:27:20
А как оно складывать будет? Если сразу даблами
var itemOffset = 0
cfor{
val double:Double = nextDouble
val long:Long = Double.doubleToLongBits(double)
output(itemOffset + 0) = (byte)(long >>> 56)
... +7 lines
itemOffset += 8
goto 1st line in cfor
}
быстрее чем это на жвм стандартными средствами уже не получится

KrivdaTheTriewe
24.05.2017
18:28:22
но за system.aarraycopy спасибо, я про такое или не знал, или позабыл

Mikhail
24.05.2017
18:30:27

KrivdaTheTriewe
24.05.2017
18:31:20
наверное там mempy

Mikhail
24.05.2017
18:32:01

KrivdaTheTriewe
24.05.2017
18:43:00

Mikhail
24.05.2017
18:44:13

KrivdaTheTriewe
24.05.2017
18:44:47

Mikhail
24.05.2017
18:47:51
эх, плохо без знания интерналсов
ерунда. достаточно принципы помнить. в 99.99999% случаях деталями можно пренебречь на сегодняшний день и уж тем более на жвм. достаточно помнить, что циклом массивы не стоит копировать и не использовать for в скале если нужна быстрая итерация)

KrivdaTheTriewe
24.05.2017
18:48:39

folex
24.05.2017
19:07:44

Nick
24.05.2017
19:10:11

KrivdaTheTriewe
24.05.2017
19:32:20
https://habrahabr.ru/company/mailru/blog/329294/
для скалы есть подобного рода статья ?

Henadz
24.05.2017
19:33:00

KrivdaTheTriewe
24.05.2017
19:34:44
нуждаются и ещё как

Nikolay
24.05.2017
19:37:37
Да были вроде статьи про то во сколько строчек можно в скале написать то да сё

Google

folex
24.05.2017
19:41:02
http://eax.me/scala-doubts/ такую знаю :)
Она конечно не про описание языка, но тоже пиар :)

Nick
24.05.2017
19:41:53

KrivdaTheTriewe
24.05.2017
19:43:13
а у котлина будет игра в минера

Nick
24.05.2017
19:46:05
Ещё прикольно писать скала для фана, Котлин для прода. Мол стабильнее)

folex
24.05.2017
19:49:23
> [DSL](C:\Users\Desktop\Cloud Mail.Ru\Mail — Почему нужно полностью переходить на Kotlin\в Kotlin)
%)
Будет забавно, если котлин покажет джавистам лучший мир, а потом они увидят скалу, и уже подготовленные разом на неё уйдут! :D

KrivdaTheTriewe
24.05.2017
19:50:27
мне кажется скалаплагин будет платитным

folex
24.05.2017
19:51:21
Это будет очень грустно. Можно будет написать им коллективное письмо тогда :)
Интересно, какую роль скала сыграла в создании котлина
https://discuss.kotlinlang.org/t/history-of-kotlin-language/2161/5
> Another reason you see companies move away from Scala is its complexity and Scala inviting you to write unreadable code, but I don't know how much of a role that played for Jetbrains.
>:

Henadz
24.05.2017
19:59:19
> Scala inviting you to write unreadable code
весьма спорное утверждение

folex
24.05.2017
19:59:39
мягко говоря

Arthur
24.05.2017
19:59:53
говно можно на чем угодно писать

folex
24.05.2017
20:00:08
Всё из-за compile time? Неужели проще написать новый язык, чем сделать https://triplequote.com/?

Henadz
24.05.2017
20:00:38
вот Brainfuck inviting you to write unreadable code )

Daniel
24.05.2017
20:17:25

KrivdaTheTriewe
24.05.2017
20:19:18

Google

Daniel
24.05.2017
20:25:12
у них из удобного были многомерные массивы, на этом все
работа с линейной алгеброй примитивная только
обратную матрицу не посчитать (полгода назад еще так и не завезли)
при этом проблемы создание даже пустого массива занимало 14мс (и причем очень стабильно, вне зависимости от прогрева вм)

folex
24.05.2017
20:26:36
benchmark-friendly методы, прогревают vm за тебя

KrivdaTheTriewe
24.05.2017
20:27:11

Daniel
24.05.2017
20:30:34
пока нет проектов с математикой
забавность была в том, что все заявы про оптимизации в каких либо джавовых либах (включая работу с нативным blas) по производительности не далеко ушли от максимально тупого while + Array (то что @rudogma говорил)
бриз брал только ради обратной матрицы, написал еще кастомное чтение из numpy файлов

Alexander
24.05.2017
20:31:51
Пагни. А как всех таки типизировать актор в акке.

Daniel
24.05.2017
20:32:25
есть еще один финт с массивами
если jit видит что с новым массивом первое же действие это его заполнение целиком, то он при инициализации не заполняет его предварительно дефолтными значениями как требует спека jvm

Nick
24.05.2017
20:33:24

Daniel
24.05.2017
20:33:53

Alexander
24.05.2017
20:34:29
Благодарю

KrivdaTheTriewe
24.05.2017
20:35:37

Alexander
24.05.2017
20:35:40
Депрекейтед

Nick
24.05.2017
20:35:45

Alexander
24.05.2017
20:36:35
Виноват. Не оно

Daniel
24.05.2017
20:39:21

Nick
24.05.2017
20:39:56
@optician_owl дай почитать, откуда ты эт взял

Daniel
24.05.2017
20:40:04
это не только с массивами работает, но на них наиболее заметно полагаю
наверняка есть корнер кейсы
доклад человека с обложки, даже не помню какой из

Nick
24.05.2017
20:40:44
ладно там векторизация и все такое
ща найду

Daniel
24.05.2017
20:40:56
векторизация не причем

Google

Daniel
24.05.2017
20:41:39
но грубо, если у тебя идет объявление массива и сразу его заполнение, то наверняка будет идти оптимальный вариант
вероятно все упирается в escape анализ

Nick
24.05.2017
20:42:19
arrays wisdom который ?

Daniel
24.05.2017
20:43:04
хз, я настолько глубоко не шарю
нет времени погружаться в тему хорошо

Nick
24.05.2017
20:43:23
самое плохое, что в исходниках не посмотришь
точнее посмотреть можно, но долго

Daniel
24.05.2017
20:44:18
но несмотря ни на что, если вам действительно нужна быстрая математика, выкидывайте jvm и пишите на питоне или чем-то низкоуровневом

KrivdaTheTriewe
24.05.2017
20:44:52

Daniel
24.05.2017
20:45:19
мне дотнетчики хвастались что у них нормальная работа с нативными либами, но насколько слышал результат был такая же задница как и в моих экспериментах

KrivdaTheTriewe
24.05.2017
20:45:27

Nick
24.05.2017
20:46:08

Daniel
24.05.2017
20:46:45
numpy, scipy это все сишное с питоновским интерфейсом онли
под капотом те же бласы
но там нет такой херни как в jvm с копированиями лишними
ну вот с llvm совсем не знаю что и как устроено
ты говорил там тоже vm

KrivdaTheTriewe
24.05.2017
20:48:08

Daniel
24.05.2017
20:48:23
была мысль в рамках изучения раста на нем написать простенькую либу

Nick
24.05.2017
20:48:40
о, а раст ж как раз с llvm, не?

Daniel
24.05.2017
20:49:13
да нет вроде
хотя могу и врать

Nick
24.05.2017
20:50:10
https://github.com/rust-lang/rust/tree/master/src/rustllvm