@ProCxx

Страница 2384 из 2477
John
28.09.2018
07:54:40
Какой алгоритм разбивает массив на части по типу split и принимает функтор?

Из буста, конечно же

Евгений
28.09.2018
08:22:08
Привет всем. У меня очень много раз выполняется вызов функции. Так вот, когда я её убрал и весь этот кусок кода вставил прямо в цикл, то код стал в 2 раза быстрее. Вот скриншот http://imgur.com/a/5Goiqav , там же и результаты

Spoonson
28.09.2018
08:24:58
можно было бы просто forceinline поменить каким-либо

Google
Timur
28.09.2018
08:39:50
так так, libreverseengine, так и запишем

Tyrell
28.09.2018
08:59:09
Всем привет, есть ли среди Вас те, кто разбирается или использовал Стрибог?

Есть ли реализация на с/с++ потокового алгоритма?

Danil
28.09.2018
09:01:28
Есть ли реализация на с/с++ потокового алгоритма?
Вы имеете в виду алгоритм шифрования ?

Tyrell
28.09.2018
09:05:17
Да, именно. те реализации, что я нашел, являются блочными, они считают конечный хэш от строки. Возможно, где-то есть готовые реализации за подсчет промежуточного хэша

Я к тому, что как нам получить хэш от очень большого файла? Если будем считывать его построчно, то и получим число хэшей == числу строк

Евгений
28.09.2018
09:06:54
так так, libreverseengine, так и запишем
Можешь записать как scanmem

Danil
28.09.2018
09:13:48
Да, именно. те реализации, что я нашел, являются блочными, они считают конечный хэш от строки. Возможно, где-то есть готовые реализации за подсчет промежуточного хэша
Попробуйте посмотреть в сторону потоковых шифрований основанных на РСЛОС , только с усложнением , например нелинейная комбинация генераторов

Egor
28.09.2018
09:16:19
так что стрибогу получится скормить файл построчно

Tyrell
28.09.2018
09:16:20
так что стрибогу получится скормить файл построчно
Получится, просто придется писать свою реализацию, которая будет запоминать внутренние состояния массивов, пока не вызовем метод финализации. Вот может уже кто-нибудь уже реализовал такую библиотеку?

Google
Egor
28.09.2018
09:22:53
так оно и должно быть так реализовано изначально

Tyrell
28.09.2018
09:29:38
Сейчас смотрю гитхабе реализацию от Дегтярева. Тот, алгоритм, что был у меня, увы, такое не умеет

Antony
28.09.2018
09:39:26
Ты ошибаешься.
Точно говорю. Вот как должна себя вести extern inline функция в С? Я не знаю

Aidar
28.09.2018
09:40:20
Шутка про decltype в лямбдах

Дед Пегас
28.09.2018
09:43:33
Точно говорю. Вот как должна себя вести extern inline функция в С? Я не знаю
Воот! Вносим пропозал имзенения C на C++ всем стандартом и готово!

Пропозал принимают и теперь ты знаешь C.

Anton
28.09.2018
09:44:32
yuri
28.09.2018
09:48:33
игнорируется и когда нужен, в Atmel Studio помню без реализации в хидере не инлайнилось никак

Anton
28.09.2018
09:49:20
сейчас святотатство скажу

макрос бы написал и не мучался

PRoSToC0der
28.09.2018
09:55:51
cp->utf32->tolower
а если графема состоит из нескольких code-point?

yuri
28.09.2018
09:56:51
а если графема состоит из нескольких code-point?
Значит тот коде-поинт, который отвечает за букву, будет преобразован, а модификаторы останутся как есть.

PRoSToC0der
28.09.2018
09:59:28
Значит тот коде-поинт, который отвечает за букву, будет преобразован, а модификаторы останутся как есть.
я не уверен что это будет верно, хотя кто знает, вообще в юникоде много чего есть

Timur
28.09.2018
10:03:09
Точно говорю. Вот как должна себя вести extern inline функция в С? Я не знаю
какой-такой inline в C? (ну т.е. в каждом компиляторе это так или иначе можно написать, но это не часть стандарта)

Antony
28.09.2018
10:05:27
макрос бы написал и не мучался
на самом деле вопрос про inline extern - это из рассылки ядра Линукс. И ведёт оно себя по разному в зависимости от флагов О_О

Anton
28.09.2018
10:06:14
падает с duplicate symbol в отдельных случаях?

Timur
28.09.2018
10:06:18
ах да, C99 (на который VC кладет с прибором. Хотя и реализовал большую часть фич) Спасибо что напомнили

Google
Anton
28.09.2018
10:06:31
не линкуется то есть

PRoSToC0der
28.09.2018
10:09:56
https://www.fluentcpp.com/2018/09/28/auto-stick-changing-style/

Antony
28.09.2018
10:12:05
не линкуется то есть
Ну вот тут боль описана https://lkml.org/lkml/2014/10/19/217 И это всё gnu89 -> gnu99 боль, даже не не c11

Stanislav
28.09.2018
10:12:48
ах да, C99 (на который VC кладет с прибором. Хотя и реализовал большую часть фич) Спасибо что напомнили
не совсем так, они не собираются вообще поддерживать С, то что не входит в С90 или не является подмножеством С++

https://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/

Timur
28.09.2018
10:14:25
но однако же они (втихую) реализовали designated initializers для структур (и это была самая большая боль)

и в тот момент это еще не было подмножеством Си++

Antony
28.09.2018
10:19:05
О! Веселье в GCC подъехало: https://github.com/gcc-mirror/gcc/blob/e3cb810239595334bc66762574cb539af28bc1e6/gcc/testsuite/g%2B%2B.dg/cpp2a/constexpr-virtual11.C

Igor
28.09.2018
10:25:20
https://www.fluentcpp.com/2018/09/28/auto-stick-changing-style/
Theoretically, the expression Widget{42} creates a temporary Widget which is then moved to myWidget. So this syntax could incur the price of a move. But even then, the compiler is allowed (and compilers are getting very good at that) to elide this move, and direclty construct the Widget{42} inside the memory space of myWidget. как будто бы allowed != should != will, и при потенциальной компиляции моего хитрозакрученного с++11 кода дряхлым но c++11-compliant компилятором, юзер оного может внезапно влететь в просадки по производительности

Igor
28.09.2018
10:28:20
В C++17 компилятор обязан в этом месте elide делать
обратите внимание на explicitly specified версию стандарта :)

а так да, согласен, как будто бы если живём на острие прогресса по заветам Винтерса - то всё ок

а в конструкциях вида const ... &map = get(); for (auto it = map[a][b].begin(); it != map[a][b].end(); ++it) компилятор может сообразить, что map изменяться не собирается, .end() сдвигаться не будет, и operator[]x2 и end() можно соптимизировать прочь до for (auto it = .begin(), e =.end(); it != e; ++it) ?

или в цикле на тыщу элементов мы будем честно делать каждый раз два поиска по дереву?

John
28.09.2018
11:24:04
Как правильно прочитать int* (*p[10]), и валидно ли это вообще?

Google
Igor
28.09.2018
11:24:43
http://c-faq.com/decl/spiral.anderson.html C Spiral / Clockwise Rule
@betraydeath а если лень напрягать мозги, то https://cdecl.org/

Pavel
28.09.2018
11:25:52
ребята, кто знает - если std::sort вызывается с компаратором который не соответсвует Compare, то все, UB? sort имеет право крашнуться? у меня на маке улетает за границы вектора сорт. как то это жестоко. понятно конечно что ничего хорошего оно не насортирует, но все же.

Igor
28.09.2018
11:26:18
там вроде даже str.size() в for() каждый раз вызывается...
сайз - да, в данном случае я и .end() могу потенциально стерпеть, меня больше интересует map[][]

yuri
28.09.2018
11:27:35
Andrew
28.09.2018
11:27:35
Ну конкретно в твоем случае есть 100% вариант const auto& current = map[a][b]

На оптимизацию тут я бы не полагался

Igor
28.09.2018
11:29:30
Ну конкретно в твоем случае есть 100% вариант const auto& current = map[a][b]
вариант то безусловно есть, я уже завернул ревью с таким чудом) мне больше интересно, о чём догадается или не догадается компилятор, если оставить как есть

Andrew
28.09.2018
11:30:31
А почему завернул, если не секрет? Норм же. Вроде его никто не обязывает догадываться, оптимизация — дело добровольное.

Igor
28.09.2018
11:37:15
А почему завернул, если не секрет? Норм же. Вроде его никто не обязывает догадываться, оптимизация — дело добровольное.
for ( const auto &input : inputs ) { for( const Json::Value &channel : input ) { string resolution = channel["params"]["resolution"]; int fps = channel["params"]["fps"]; for (auto it = channel["params"]["sub"]; it != channel["params"]["sub"].end(); ++it) { ... прям жирное, капсом, с подчёркиванием "не хотеть!" лишние разы бегать по дереву json в трижды-вложенном цикле

Anton
28.09.2018
11:37:36
а в чём проблема написать int size = something.size() перед циклом и не гадать?

в оптимизаторе тупо баг могут добавить

Andrew
28.09.2018
11:38:44
Я просто так понял сообщение, что ты забанил на ревью код с const auto&

вариант то безусловно есть, я уже завернул ревью с таким чудом) мне больше интересно, о чём догадается или не догадается компилятор, если оставить как есть

Igor
28.09.2018
11:42:31
а там итератор в теле действительно нужен?
неа, итератор там лежит со времён "auto уже есть, а range for пока не завезли"

не пробовал на годболте проверить?
если взять стандартную мапу, то творится чёрная магия, мне не хватает скиллов ассемблера чтобы разобраться в этих перепрыгиваниях https://godbolt.org/z/t5sjZQ но если взять свои типы без определений методов, чтобы компилеру было видно только call, то действительно дёргает два [] в цикле, не кэшируя( https://godbolt.org/z/_2FgIq

Google
Arseny
28.09.2018
12:08:15
Он теоретически не может убрать вызовы, если не видит их определения.

Igor
28.09.2018
12:09:57
потому что даже при сигнатуре const& fun(...) const, под капотом всё равно могут возвращаться ссылки на разные объекты, в зависимости от всяких глобальных условий и статических счётчиков?

Igor
28.09.2018
12:12:36
эх, прям захотелось модификатор pure в терминах классической функциональщины, "при одном и том же параметре функция возвращает один и тот же результат, йа горонтирую это" ...хотя он наверняка неприменим к возврату ссылок и указателей на элементы контейнеров, которые допускают реаллоцирование памяти, перебалансировку и прочее жонглирование своим содержимым, при котором старые указатели становятся невалидными

Igor
28.09.2018
12:17:28
хм auto &e = map.at(x); map.insert(y); func(e); // бабах, да?

Ilia
28.09.2018
12:20:06
Igor
28.09.2018
12:22:23
Чем ты там json парсишь?
jsoncpp, сходу версию не скажу

Ilia
28.09.2018
12:23:35
Pavel
28.09.2018
12:23:47
ну там внутри сорт оно выходит за vector::end(), это жестко, может мем корапт сделать. если бы просто зависло я бы еще понял. немного странно для стандартной либы. я думал может им надо отрепортить. просто libstdc++ хэндлит такое. но конечно если UB то не сожгла мой жесткий диск и ладно вобщем.

Страница 2384 из 2477