Войти
ПроектыФорумУтилиты

Intra - альтернатива STL / Boost (2 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 3 414 Следующая »
#15
21:33, 6 сен. 2016

с смейком я решил проблему, он построил проект, но сам потом падает при компиляции, там много ошибок, так быстро не разобрать


#16
21:38, 6 сен. 2016

Все-таки STL нотация мне нравится куда больше :3

gammaker
> Я же написал, что родной настроенный руками студийный проект удобнее и
> функциональнее.
Все правильно. Только *.user файлы не просто так *.user файлами звуться.)

gammaker
> Это отказ от STL и вообще всех стандартных и сторонних хидеров в моих хидерах.
Даещь свой рунтайм. А то я там увидел предательские ссылки на всякие разные вещи из стандартной библиотеки.

#17
21:39, 6 сен. 2016

gammaker
> мои контейнеры и алгоритмы побеждают почти во всех тестах, причём во многих тестах в разы.
  А какой смысл сравнивать Вихрь Мерсенне с криво написанным линейным конгруэнтным генератором? Очевидно, что последений даже в геймдеве не везде годится. Если ты пытался реализовать это, то модуль там не 232, а 231-1. Вообще если не шаришь в генераторах случайных чисел, то лучше не берись, это не та область, куда следует соваться без знаний. То, что получилось по качеству генерации будет даже хуже, чем стандартный rand, а к различным типам он и так приводится без проблем когда надо, поэтому все эти реализации шаблонов можно тоже смело выкидывать.

#18
21:39, 6 сен. 2016

HardMorg
> При том что это говнокод, если бы мне нужен был студи  ный проект я бы
> загенерил его одной кномкой, посмотри какой-нибудь опен сорс проект, как там
> все делают
Ну сколько раз, блин, повторять, что мне нужно время, чтобы хорошо изучить CMake? Если я смогу на нём сделать всё, что я сейчас делаю в студии, я избавлюсь от студийного проекта. А пока я не могу разобраться, как там наделать кучу конфигураций с возможностью быстрого переключения. И я не уверен, что это вообще возможно, потому что на некоторые мои вопросы никто не отвечает и загуглить не получается. Тема об этом тут.

-Eugene-
> В релизе? Серьезно? Хм, интересно было бы это изучить.
Да, в релизе. Дебаг вообще не инлайнит ничего, даже с __forceinline. Можешь проверить на тестах текстовой сериализации\десериализации. Я на них видел такое отличие.

-Eugene-
> В Notepad код выглядит одним образом, в Notepad++ - вторым, в FAR-е - третьим,
> в гите - четвертым, а в студии пятым. Ну и нахрен такое надо?
Я использую табы только в начале строки так, чтобы выровненные участки кода не разъезжались при смене длины. Чем это мешает?

-Eugene-
> Почему имена не в нотации всей библиотеки?
Потому что я ещё не решил, что с ними делать. Они всё-таки такие маленькие и низкоуровневые, что мне показалось, что их лучше назвать с маленькой буквы. Но вообще я планировал пересмотреть этот вопрос.

-Eugene-
> И ты не ответил про _
> Что это за хрень?
Это вместо длинного value в стандартных трейтах. Мне пришлось воздержаться от использования фичи C++14 variable template, которые помогли бы избавиться от ::_, потому что тогда пришлось бы отказаться от поддержки многих не самых новых компиляторов. Этой фичи не было даже в релизе MSVC 2015, её только потом в каком-то Update добавили.


HardMorg
> И вообще, нафига нужен тот код который не будет собираться??? тогда держи его
> локально и добавишь в репозиторий когда он будет нужен
Бывает наоборот, что нужно вернуть старую версию одного лишь файла. И менять их туда-сюда, сравнивая их работу, например в попытках поймать баг или понять, почему производительность снизилась. Вот тогда я это и делаю. Просто переименовываю исходный файл, а на его место кладу другой.

eXmire
> Все правильно. Только *.user файлы не просто так *.user файлами звуться.)
А, ладно, узнаю про них и уберу из гита.

eXmire
> Даещь свой рунтайм.
Если заглянешь в CompilerSpecific.cpp, то увидишь попытки создания своего рантайма. Но у меня не получилось заставить работать инициализацию и вызов деструкторов глобальных и статических объектов.

>А то я там увидел предательские ссылки на всякие разные
> вещи из стандартной библиотеки.
Где? В хидерах? Там вроде ничего не должно было остаться, если ты конечно не про memcpy и memcmp в core. Но они так хорошо оптимизированы, а ещё компилятор заменяет их на intrinsic'и, что я не хочу от них избавляться. На C++ вряд ли получится сделать лучше, а до уровня ассемблера я опускаться не хочу.

Zefick
> А какой смысл сравнивать Вихрь Мерсенне с криво написанным линейным
> конгруэнтным генератором?
Такой, что в стандартной либе нет такого быстрого, пусть и неточного рандома. И этот криво написанный генератор вполне хорошо работает там, где я его использую. Пробовал генерить им картинку и звук шума, артефактов не заметил. Вроде всё равномерно.
Кому нужен рандом получше, пусть возьмёт сторонние средства.
А когда надо просто забить контейнер тестовыми данными, вполне сойдёт.

Zefick
> То, что получилось по качеству генерации будет даже хуже, чем стандартный rand,
> а к различным типам он и так приводится без проблем когда надо
RAND_MAX на x86 всего лишь 32767 - 15 бит. А мой рандом заполняет число целиком.

#19
21:57, 6 сен. 2016

gammaker
> Чем это мешает?
Тем, что код выглядит по разному в разных местах, я же написал. Видел в гите какие табы?

> Это вместо длинного value в стандартных трейтах.
Имена, начинающиеся с _, запрещено использовать. _, очевидно, начинается с _.

#20
22:07, 6 сен. 2016

-Eugene-
> Имена, начинающиеся с _, запрещено использовать. _, очевидно, начинается с _.
Это только потому, что они зарезервированы для стандартной библиотеки и расширений компилятора. Но я уверен, что не найдётся такого дурака, который вдруг сделает _ ключевым словом или задефайнит его. А если так, то никаких проблем с этим нет. А если вдруг появится, то Ctrl+H и проблема решена.

-Eugene-
> Тем, что код выглядит по разному в разных местах, я же написал. Видел в гите какие табы?
Да, широкие. Ну ладно, подумаю над табами как-нибудь.

#21
22:25, 6 сен. 2016

gammaker
> Но я уверен, что не найдётся такого дурака, который вдруг сделает _ ключевым
> словом или задефайнит его.
Не оправдание. Использование запрещенных стандартом вещей и UB никогда не имеет оправдания.
Если бы я писал компилятор, такой код в пользовательских файлах выдавал бы ошибку или ворнинг. Уверен, что такая светлая мысль не придет или уже не пришла в голову каким-нибудь разработчикам какого-нибудь clang-а?..

#22
22:41, 6 сен. 2016

gammaker
> Такой, что в стандартной либе нет такого быстрого, пусть и неточного рандома.
  Так можно всегда возвращать число 42, а на любую критику говорить, что это рандом и тут нельзя быть уверенным должно быть так или нет. Зато быстро будет, шописец. Писать обёртку вокруг операции умножения со сдвигом на сотни строк это дрочь ради дроча лишь бы было. Кому надо, тот это всегда сделает.
  Например вот генератор, который я писал недавно для обеспечения повторяемости на разных языках:

int rand() {
    static unsigned rndSeed = 1;
    rndSeed = rndSeed * 1103515245 + 12345;
    return (rndSeed >> 16);
}
  Вот как бы и всё, больше там ничего не надо.
  А скорость подобных операций важна разве что в каких-нибудь научных приложениях с симуляциями, только там качество важно ещё больше, поэтому вихрь в любом случае вне конкуренции.
#23
22:45, 6 сен. 2016

gammaker
о!!! Круто.
я гляну подробно. Мельком глянул

template<typename T, class Allocator>
нафиг class ??? это усчтарело пользуйся современным синтаксисом.
template<typename T, typename Allocator>
я еще вернусь!
#24
22:55, 6 сен. 2016

Zefick
> А скорость подобных операций важна разве что в каких-нибудь научных приложениях с симуляциями
Скорость нужна в тестах производительности заполнения контейнеров, чтобы рандом вносил как можно меньше погрешности. И для генерации картинок вполне сойдёт.

Zefick
> Так можно всегда возвращать число 42, а на любую критику говорить, что это
> рандом и тут нельзя быть уверенным должно быть так или нет.
Я сгенерил картинку и убедился, что никаких периодов и других неоднородностей нет или незаметно. Значит для каких-то целей это юзабельно.

Zefick
> Писать обёртку вокруг операции умножения со сдвигом на сотни строк это дрочь
> ради дроча лишь бы было. Кому надо, тот это всегда сделает.
Мне надо было, эта шаблонность используется в моей библиотеке, смотри Test/PerformanceTest.cpp.

Так... пока это писал, обнаружил, что нет папки Test в репе в исходниках. Вот из-за чего у вас не компилится! .gitignore сожрал то, что не должен был. Но я уже исправил и залил. Попробуйте теперь.


Andrey
> template<typename T, class Allocator>
> нафиг class ??? это усчтарело пользуйся современным синтаксисом.
Ну потому что Allocator - это точно class. А остальные типы typename, потому что могут быть любые типы.

#25
22:56, 6 сен. 2016

Andrey
> нафиг class ??? это усчтарело пользуйся современным синтаксисом.
С чего вдруг class устарел?

#26
23:04, 6 сен. 2016

-Eugene-
> С чего вдруг class устарел?
typename избавит от всяких нюансов.
http://alenacpp.blogspot.ru/2006/08/typename.html
http://stackoverflow.com/questions/213121/use-class-or-typename-f… te-parameters
да много чего по поводу typename vs class мона найти.
Но сразу говорю я дискуссировать и разводить срачь про нюансы синтаксиса C++ не буду :)
Когда шаблоны появились ключевого слова typename не было.

shader_code_addins[0]+="#define varying out\r\n"
      "#define attribute in\r\n";
    shader_code_addins[1]+="#define varying in\r\n";
Я тоже так делаю :)))
#27
23:06, 6 сен. 2016

Кто бы что ни говорил, а чужой труд нужно уважать. Планка поставлена высоко и gammaker может ее взять, но если постоянно писать "нах это нужно", то можно и энтузиазм отбить. Пока что я видел тут только придирки по большей части, а в общем то все гуд. Но было бы интересно посмотреть поведение библиотеки в каком-нибудь большом проекте.

#28
23:19, 6 сен. 2016

Andrey
В данном случае нет никаких ньюансов.

#29
23:51, 6 сен. 2016

Andrey
> shader_code_addins[0]+="#define varying out\r\n"
> "#define attribute in\r\n";
> shader_code_addins[1]+="#define varying in\r\n";
> Я тоже так делаю :)))
Хм, а я ведь не собирался включать это в git, оно случайно попало. Этот файл относится к сломанной части моего движка, которую я буду перепиливать. И все эти штуки в более читабельном виде перекочуют в Graphics/OpenGL/GLSL.cpp.

mr.DIMAS
Спасибо за поддержку!

Страницы: 1 2 3 414 Следующая »
ПроектыФорумУтилиты

Тема в архиве.