Мирон
он бинарнобезопасен
Alexander
Alexander
jsoniter кстати и быстрее в 2 раза. реально тупо быстрее
Мирон
Мирон
мне он нужен чтобы выводилось на экран и в файл
Vladislav
а зачем выводить на экран если ты не собираешься это читать?
Мирон
кто сказал что не собираюсь
Мирон
у меня логи там
Vladislav
ну когда много бинарщины читается очень хорошо
Мирон
я вижу �
anhckie
почему в sql/db.execContext сыпется ошибкой такой запрос?
SET @var1 = ?, @var2 = ?;
INSERT INTO table_name (column1, column2) VALUES (@var1, @var2) ON DUPLICATE KEY UPDATE column1 = @var1, column2 = @var2;
в консоли бд отрабатывает, а из приложухи
Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ......
anhckie
пакет "database/sql"
Alexander
скорее всего один стейтмент должен быть. если хочешь попробовать с 2мя, то тебе точно надо либо брать соединение, либо открывать транзакцию - такова специфика
Alexander
а зачем это вообще делать?
anhckie
для реализации апсерта
anhckie
если записи нет - создать, если уже была - апдейтим
Alexander
db.Exec("INSERT INTO table_name (column1, column2) VALUES (?, ?) ON DUPLICATE KEY UPDATE column1 = ?", column2 = ?, var1, var2, var1, var2)
anhckie
так и делаю по итогу, но просто напрягает дублеж аргументов
Vladislav
anhckie
первое
Vladislav
а зачем тогда его апдейтить?
Alexander
хм)
anhckie
та оно и не проапдейтится по итогу)
ну убрать можно, да
Кіт ✙
пытаюсь имплементировать у себя динамический роутинг. Регулярки из стд-либы откинул сразу, они слишком медленные (гиперскан не пробовал пока), поэтому написал своё миниатюрное решение, алгоритм которого состоит в следующем:
Статичная часть (захардкоженная часть пути) и динамическая чередуются. У нас есть цикл, который сначала сравнивает префикс пути со статической частью, и потом бежит по оставшейся части пути до тех пор, пока не встретит слэш или конец строки. Как только встретил, обрезает префикс пути, где префикс - статическая и динамическая части.
Гист - https://gist.github.com/fakefloordiv/7a5cdebe48223305093a20b40845a9de
Кіт ✙
ах да, забыл упомянуть: из требований - динамические части нужно схоронять в контекст под соответствующим именем
Кіт ✙
Вот результаты бенчмарков (сами бенчмарки также представлены в гисте). Меня не совсем устраивает medium и long кейсы (хотя всё ещё быстрее, чем регулярки). Не могли бы вы подсказать, как это можно было бы оптимизировать?
anhckie
что такое «динамический роутинг»?
Pavel
Vladislav
Vladislav
ну и да, если заменить /{...}/ на /:.../ обрабатывать проще будет
не нужно закрывашку искать, слеш служит закрывашкой или конец строки
Vladislav
Vladislav
просто про их медлительность - голосновное утверждение по сути, особенно в контексте сравнения с твоей реализацией
Alexander
Vladislav
Кіт ✙
Кіт ✙
обновил гист, добавил бенчмарки для регулярок. Результаты прикрепляю
Кіт ✙
регулярки всё же на длинных паттернах выигрывают, кстати. Надо будет гиперскан попробовать
Кіт ✙
кстати, по поводу интерналов - вот эта штука. Я просто взял дефолтный WithValue у контекста, и убрал оттуда рефлексию
Vladislav
скорее всего, из-за контекста
замени вот эти две козявки
for i := range dynamicPart {
if dynamicPart[i] == '/' {
на
if idx := strings.IndexByte(dynamicPart, '/'); idx != -1 {
интересные результаты
Кіт ✙
Кіт ✙
Кіт ✙
чичас заодно гист обновлю
Vladislav
ну это потому что переделал, у меня в 3-6 раз ускорилось
Кіт ✙
Кіт ✙
Vladislav
Vladislav
Vladislav
у тебя архитектурка другая
Кіт ✙
Vladislav
в плане могут быть забавные различия
Кіт ✙
Кіт ✙
бедный дсигнер...
Vladislav
Кіт ✙
кажись контекст опять слишком много жрёт
НАДО ИСПРАВЛЯТЬ
Vladislav
да, контекст жиреет
Кіт ✙
а аллокации из-за того, что он по указателю хранится. Обидно
Кіт ✙
Vladislav
чесно говоря мне еще не нравится как делается перебор по статичным кускам
Vladislav
главное слово "перебор"
Кіт ✙
Vladislav
например если статики много, то наверное лучше будет потрошить динамику и чекать в мапе статики
Кіт ✙
мда, убрав указатели, ничего не поменялось
Кіт ✙
(сверху - без указателей, снизу - с, разница - в пределах погрешности)
Кіт ✙
Кіт ✙
о, во, нашёл
Кіт ✙
Кіт ✙
PaXton Global IT Training & Consulting Services
Hi
kostyaBro
53 и 68 строка. У key тип K должен быть, как я понимаю
kostyaBro
И output V
Кіт ✙