🎉
🎉
Тем более есть жи бенчмарки, и на каком месте там грамм?
Aleksei
На первом
Kirill
Aleksei
Среди фреймворков
Kirill
🎉
Kirill
;)
$continue$
Пользовался, кто то нуклером в го?
Kirill
Kirill
выше вроде по-русски было же написано, но для true lazy devs - https://github.com/smallnest/go-web-framework-benchmark
Aleksei
Там есть движки, есть просто роутеры и есть фреймворки. Все в одном бенчмарке. Из фреймворков грэймворк первый
🎉
Aleksei
Kirill
Kirill
Но грэйм 2.0 будет на своём двигле
🎉
Аааа)) Но всё равно, для SPA я заюзаю свою поделку. Ибо вот пишу бота, было 6MB, импортнул sql стало 12.
Aleksei
Я надеюсь, что он обгонит даже сам fasthttp) тогда это вообще будет лол)
Aleksandr
Kirill
Aleksandr
да
🎉
Aleksandr
до 2-3 дожмем)
Kirill
Kirill
оверхед маленький
Anonymous
Ну так-то стремиться есть ещё куда))
Kirill
а после upx grame
-rwxr-xr-x 1 kirilldanshin staff 2,8M 29 янв 18:53 grame*
-rwxr-xr-x 1 kirilldanshin staff 5,8M 29 янв 18:52 test*
Kirill
upx test
и приходим к тому, что оверхед настолько незначительный по сравнению со временем, потраченным на вариант "ручками", что нет смысла этот вариант делать
-rwxr-xr-x 1 kirilldanshin staff 2,8M 29 янв 18:53 grame*
-rwxr-xr-x 1 kirilldanshin staff 2,0M 29 янв 18:52 test*
Kirill
🎉
Diasko
Вечер добрый, подскажите как решить вот такую задачу https://play.golang.org/p/gWiOchJibet
Diasko
смысл в чем, как указать в интерфейсе функцию которая относиться к структуре по *
Diasko
Решение нашлось
TestInterface(&t)
Alexander
Есть хорошее объяснение этого в Go FAQ - https://golang.org/doc/faq#different_method_sets
Alexander
У типа Test есть только метод GetT, а у *Test есть методы GetT и SetT
Roman
А как в рантайме создать массив?
Roman
У меня есть указатель на кусок памяти и размер, я знаю что там лежит n элементов, допустим, uint32
Alexander
arr := new([100]string)
Alexander
но вообще лучше slice использовать. Это тот же массив, только с динамическим размером
Alexander
какой такой указатель в go?
Илья
Илья
Roman
И мне ннадо к этим обращаться из go
Daniel
и что?
Daniel
при чем тут преобразования в слайс?
Roman
Roman
Можно даже сильно упростить: чего стоит слайс от уже имеющегося слайса?
Yura
Roman
Kirill
Andrei 🦉
сори, пора спать)
Kirill
Тогда с результатами профайлинга cpu и mem в личку, а там проконсультирую
Kirill
Но тогда будь готов, могу тебе разломать картину мира, если ты в эти вопросы не вникал
Roman
Yura
Чуть позже гляну профайлером.
Так ты бы вначале глянул, а потом мозги полоскал всем. Если ты действительно кастишь поинтер в слайс таким образом, то вряд ли ты что-нибудь сильно быстрее изобретешь.
Kirill
Kirill
Kirill
Это далеко не самый быстрый вариант
Yura
Другое дело, если у тебя изначально поинтер есть на весь кольцевой буфер, то можно его кастить в массив, и доставать елемент по номеру:
ring := (*[1024][2048]byte)(pointer)
elem := (*ring)[n][:]
Взятие слайса обязательно, иначе скопируется массив из 2048 байт.
Roman
Yura
Точно так же можно кастить поинтео в массив-элемент, и брать от него слайс:
elem := (*(*[2048]byte)(pointer))[:]
Yura
А главное, все эти способы наверняка более-менее эквивалентны, с точностью до трех-четырех инструкций. И их легко проверить руками маленьким скриптом. А потом поделиться результатами. Вместо того, чтобы спрашивать.
Roman
Kirill
🎉
Будет ли новая версия быстрее старой?