Anonymous
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, usag[l], sizeof(usag[l]), 0); Вот так функцию вызываю
Andrei
Всё что можно статически заредуцировать компилятор заредуцирует и оставит WHNF, потом когда ты запускаешь программу и у тебя уже форсируется то или иное вычисление значение в терм подставляется и программа снова приводится к WHNF
Andrei
Если же вычисления не форсируются, то осуществляется только подстановка. И всё это хпранится в виде здоровенного невычисленного chunk-а.
Sergey
Если же вычисления не форсируются, то осуществляется только подстановка. И всё это хпранится в виде здоровенного невычисленного chunk-а.
я думал в момент компиляции редукция до WHNF, потом в момент рантайма оставшееся дерево вычисляется до нормальной формы
Sergey
всё лень начать нормально учить язык с другой парадигмой(( было бы это нужно на работе...
Andrei
Насколько я понимаю — нет. В рантайме те же слабозаголовочные формы.
Anonymous
http://pastebin.com/WAwfspwp
Anonymous
Char usag[n][m]={};
Anonymous
Ну и потом он заполняется
Surreal
Если закомментить строку, то компилируется?
Anonymous
Ага
Surreal
А urlmon.lib подключена в зависимостях?
Anonymous
Нет, думал достаточно .h
Anonymous
А как подключить не подскажешь, недавно студией пользуюсь?)
Surreal
Или в свойствах проекта через input - additional dependencies, или попробовать #pragma comment(lib, "urlmon") в файле, где у вас вызывается функция.
Surreal
Нет, думал достаточно .h
На msdn есть секция "Requirements". Чаще заглядывайте в доки. https://msdn.microsoft.com/en-us/library/ms775123(v=vs.85).aspx
Anonymous
Я подключил с помощью прагмы .либ, а как подключить .dll, я на мсдн читаю и не понимаю нифига про неявное связывание, а явное не получается сделать, ругается
Anonymous
HMODULE hlib; hlib = LoadLibrary(LPCWSTR(Urlmon.dll));
Anonymous
Пишет hlib не содержит класс хранения или спецификатор типа
Anonymous
Может как-то попроще можно подключить, подскажите кто-нибудь?
Surreal
> Или в свойствах проекта через input - additional dependencies
Matway
Ну это же просто предупреждение нерасторопности программиста, разве нет?
Нет. Например, есть на плюсах некий шаблон. Например, считает Фибоначчи какие-нибудь. И критерием окончания вычислений как раз и является вот такая ветка, где результат известен во время компиляции. Теперь представим себе язык, где шаблонов нет. Всё пишется в едином синтаксисе языка. При этом то, что в плюсах бы пришлось делать шаблоном, здесь делается обычным языком, но правила оптимизации этого чего-то известны заранее.
Matway
Например, мы пишем код "вызвать функцию, которая посчитает 10-е число Фибоначчи". Этот код гарантированно будет заменён на число. Если же мы этого по какой-то причине не хотим, то мы специально говорим компилятору, чтобы он забыл, что число 10 статически известно.
Sergey
Например, мы пишем код "вызвать функцию, которая посчитает 10-е число Фибоначчи". Этот код гарантированно будет заменён на число. Если же мы этого по какой-то причине не хотим, то мы специально говорим компилятору, чтобы он забыл, что число 10 статически известно.
Ну здесь то значение известно на этапе компиляции. Мы же говорим всего лишь о известном характере поведения неизвестных значений, из которого мы можем сделать некоторые выводы
Artem
LLVM 4.0.0 (Score: 109+) Link: http://j.mp/2nxgCiZ
Surreal
#pragma optimize( "", off ) ?
Surreal
Можно unique_ptr передавать в функцию.
Roman
Эмм
Roman
А можно ли писать на плюсах эмбеддед?
Surreal
А что, кстати, в плюсах с volatile для ссылок? Там, вроде, траблы с кастом были. Попробуйте еще volatile к ссылке добавить, мб сработает.
Roman
А для всяких mips?
Surreal
Не, я вспомнил. По ссылке на volatile можно передать только volatile объект.
Surreal
Что очевидно на самом деле должно быть.
Surreal
А имеет смысл? Вектор, очевидно, где-то еще используется, а вы ставите крест на его оптимизации.
Surreal
Можно попробовать в конце делать присваивание какое-нибудь. Лучше всего для последнего элемента, к которому у вас доступ в асме идет последним.
Nikolay Markov
товарищи, а кто работал с protobuf/msgpack?
Nikolay Markov
у нас тут срач с коллегами, они мне задвигают, что второй "по определению" лучше и что я должен это принять на веру, но почему именно лучше - не говорят
Deleted Account
а.. я тока про первый слышал
Deleted Account
хорошый
Nikolay Markov
thrift лучше их обоих // let the srach begin
thrift для другой задачи во многом
Surreal
Можно еще поэкспериментировать с указателями. Должно работать при передаче shared_ptr, но можно завернуть в unique_ptr и возвращать из функции unique_ptr мб быстрее получится, но надо бенчить. Дико, конечно, но должно помочь открыть глаза оптимизатору. С присваением самый быстрый вариант, но стабильным его назвать сложно. И поставьте на этой строке коммент, что оно нужно и не надо его трогать.
Vladislav
thrift для другой задачи во многом
вообще, надо под задачу бенчмаркать и выбирать лучший
Vladislav
Если смотреть в среднем по больнице чисто для сериализации, то вот https://github.com/thekvs/cpp-serializers
Nikolay Markov
вообще, надо под задачу бенчмаркать и выбирать лучший
да проблема в том, что у нас в конторе почему-то глобально "кто-то когда-то принял решение", что везде будем юзать msgpack
Nikolay Markov
при этом протобуф есть в системе сборки, но он там старый
Nikolay Markov
а на мой резонный вопрос "почему бы его не обновить" единственным ответом было "он говно, юзай msgpack, потому что мы так решили"
Surreal
А попробуйте вместо присваивания поставить: (void)descriptor;
Surreal
Я встречал где-то код: do { (void)x; } while (false); как раз с asm блоками.
Nikolay Markov
а что у вас для rpc? Или не пользуетесь?
да в том-то и дело, что мне не для rpc
Nikolay Markov
мне надо бинарные структуры довольно четкого формата пересылать
Nikolay Markov
сериализатор-десериализатор для них уже давно написан, почему бы не заюзать строго типизированный protobuf - я не очень понимаю
Deleted Account
мне надо бинарные структуры довольно четкого формата пересылать
хотя я ошибся, у протобуфа генерёное файло так себе, там классы уродливые
Vladislav
мне надо бинарные структуры довольно четкого формата пересылать
судя по синтетическим тестам, protobuf и message +- одинаковы по размеру сообщений и скорости сериализации/десериализации, правда тесты довольно старые
Deleted Account
+ я не знаю как в новых версиях , в нашей он поганит имена, приводит всё к нижнему регистру
Vladislav
такие вещи нельзя раз и навсегда решать, библиотеки-то эволюционируют
Nikolay Markov
покатит?
Vladislav
разве что чтобы зоопарк не плодить
Nikolay Markov
а данные большие?
не очень, в мегабайтах не скажу, но вроде около нескольких терабайт в день
Surreal
Вот тут: https://github.com/google/benchmark/blob/master/include/benchmark/benchmark_api.h#L233 Есть функция DoNotOptimize. Ниже она же для msvc. Можете поковырять.
Surreal
Там ниже, где длинный каст.
Vladislav
не очень, в мегабайтах не скажу, но вроде около нескольких терабайт в день
с такими объемами не должно быть проблем ни с одной библиотекой, имхо, тем более все равно bottleneck'ом будет сеть
Surreal
void UseCharPointer(char const volatile*) {} template <class Tp> inline void DoNotOptimize(Tp const& value) { UseCharPointer(&reinterpret_cast<char const volatile&>(value)); }
Vladislav
embedded - это весело, я смотрю)
Surreal
Да это не мне, это гуглу спасибо. Их же код. Если конкретно, то, вроде, Чендлер Каррус(т) этим занимался.
Andrei
До чего же меня бесят гнутые разработчики.
Andrei
И вообще опенсоурсники. Почему нельзя сделать так, чтобы их либа собиралась на винде без убийства на это целого рабочего дня?
Andrei
Самое ублюдочное, это .h файлы, которые собирает только configure
Andrei
За такое хочется убивать.
Andrei
Как я должен без вашего богомерзкого линукс-окружения это делать на моей убогой винде без баша.