@ProCxx

Страница 2440 из 2477
olologin
16.10.2018
19:24:19
до этого всегда ловил подобное валгриндом, но сейчас в валгринде результат стабильно хороший

будто мы не выполняем плохих веток кода когда запускаемся в валгринде

а как gcov поможет?
понять в чём разница между плохим запуском и хорошим

я же в теории должен увидеть какие строки кода стали выполняться чаще/реже в сравнении двух запусков

Google
olologin
16.10.2018
19:25:34
от этого уже буду копать

если получится

проблема собственно в этом триангуляторе

но там кода очень много, и не моего, поэтому вот так приходится

olologin
16.10.2018
19:27:32
А в чём проблема?

Ilia
16.10.2018
19:28:04
мужик написал какой-то триангулятор, под виндой нет этой проблемы, а вот под линуксом почему-то есть
Ну ты увидел там самое главное, что в 90% случаев оно в фукнцию заходит и тут же выходит? Может лучше не вызывать фукнцию при таком раскладе вообще?

olologin
16.10.2018
19:28:23
трешак всё-таки из-за релиза с дебагинфо

так что надо в полном дебаге это делать

или оптимизации повырубать

только-что проверил

Ilia
16.10.2018
19:29:41
А в чём проблема?
Сравнивать два запуска можно только если у тебя 100% повторяемость последовательности выполнения кода в программе. Если есть недетерминированность какая-то -- уже фиг. Так что надо это дело использовать для поиска узкого места , устранять, и искать следующее.

olologin
16.10.2018
19:29:59
какое дело?

Google
Ilia
16.10.2018
19:30:06
так что надо в полном дебаге это делать
Это не дебаг вероятнее, это просто включённая оптимизация. я блин не дочитал твои сообщения выше...

Anatoly
16.10.2018
19:30:11
так что надо в полном дебаге это делать
А толку от этого профайлинга?

Ilia
16.10.2018
19:30:50
А толку от этого профайлинга?
Не ну чисто алгоритм верифицировать, что ж не так?

Anatoly
16.10.2018
19:31:42
Ilia
16.10.2018
19:32:08
Да тут ещё пойми что дебаг, а что релез. У него там линух...

olologin
16.10.2018
19:32:52
Ilia
16.10.2018
19:32:58
какое дело?
Короче ты можешь собрать Release, но с включённым Debug Info (это не страшно, это только символы видны) и с выключенной оптимизацией.

olologin
16.10.2018
19:33:10
А количество выполнений каждой строки

olologin
16.10.2018
19:33:37
А на винде не так разве?

Я просто не уверен, но кажется в дебаг билде проблема тоже не воспроизводится

Ilia
16.10.2018
19:34:41
А на винде не так разве?
Ну тоже по-разному. Есть разная винда...

olologin
16.10.2018
19:34:45
ладно, это уже мои проблемы

Anatoly
16.10.2018
19:35:23
Я просто не уверен, но кажется в дебаг билде проблема тоже не воспроизводится
Дебаг это еще и обнуленные переменные и сторожевые буферы на стеке

olologin
16.10.2018
19:35:50
и собственно в дебагинфе

Ilia
16.10.2018
19:35:56
А на винде не так разве?
В MSVC есть отладочная библиотека и отладочный режим кодогенерации со всякими гардами и ловушками. Это дело в принципе не предназначено чтобы работать. Оно служит как действующая модель приложения .

olologin
16.10.2018
19:36:36
так переменные обнуляются в дебаге и в gcc и в msvc?

Google
olologin
16.10.2018
19:36:51
не задавался раньше такими вопросами

Ilia
16.10.2018
19:37:54
так переменные обнуляются в дебаге и в gcc и в msvc?
Ну не обнуляются, а там всякие хитрые гарды ставятся, если есть обращение к переменной, до присваивания оно генерит исключение. Типа такого

Но GCC вроде такого не делает по умолчанию.

olologin
16.10.2018
19:40:29
http://prntscr.com/l6ts6f

Это так, на память

Ну не обнуляются, а там всякие хитрые гарды ставятся, если есть обращение к переменной, до присваивания оно генерит исключение. Типа такого
Я точно помню что многие подобные баги с использованием неиниц переменной не ловились нифига в msvc

только с valgrind'ом

Alexen
16.10.2018
19:50:32
int a[] = {1, 2, 3}; вычисли размер массива, используя указатели
под вечер увидел этот прикол, и вот не менее прикольный ответ - (a[2] - a[-1])

Alexen
16.10.2018
19:51:53
да, причём ещё какое

Anatoly
16.10.2018
19:52:48
да, причём ещё какое
Есть абсолютно легальное решение

Igor
16.10.2018
19:53:19
так переменные обнуляются в дебаге и в gcc и в msvc?
У MSVC для разных способов аллокации разные дефолтные значения в дебаге - https://community.kde.org/index.php?title=Guidelines_and_HOWTOs/Debugging/MS_Windows&redirect=no#Memory_Values

Alexen
16.10.2018
19:55:55
Есть абсолютно легальное решение
а оно точно будет легальным при любой расстановке и любой архитектуре, т.е. укладывается в стандарт?

Alexen
16.10.2018
20:00:11
Ага
и без знаний индекса последнего элемента?

Anatoly
16.10.2018
20:01:10
Egor
16.10.2018
20:01:36
? int a[] = {}; int p; sz = &p - a;

Simon
16.10.2018
20:02:18
Anatoly
16.10.2018
20:02:23
? int a[] = {}; int p; sz = &p - a;
Никаких гарантий

Google
Simon
16.10.2018
20:02:47
Поинтеры на разные объедки памяти

Alexen
16.10.2018
20:09:20
@anatolijs у меня мозг выдал только из последних стандартов решение, я уже отвык от старого стиля магии: https://godbolt.org/z/8-Nq6X

Alexen
16.10.2018
20:15:06
так std::size(a) это и есть по сути sizeof

Александр
16.10.2018
20:15:28
так в ТЗ как раз int a[] = { some compile-time seq }

Alexen
16.10.2018
20:16:02
там выше было написано что без шаблонов и прочего

Alexen
16.10.2018
20:17:18
Ой вей, не вдуплил в эту магию. Можешь объяснить?
нет никакой магии, я могу узнать размер структуры когда знаю расстояние между ней и её соседом в массиве

Alexen
16.10.2018
20:18:25
в диалоге после закреплённого сообщения

ааа, понял прикол

https://godbolt.org/z/k_qhbT

но за такое надо руки отрубать от задницы

Anatoly
16.10.2018
20:25:52
Alexen
16.10.2018
20:27:12
это такой же этюд как и a[0] вместо *a, где *a указатель не на массив

ну нафиг короче

Anatoly
16.10.2018
20:29:45
Странная реакция

olologin
16.10.2018
20:29:49
ну и тулкит vc120 соответственно

Google
Alexen
16.10.2018
20:30:01
понабрались от кернел -девов говна и теперь хвастаются

olologin
16.10.2018
20:30:07
или какой там стандартный

Stanislav
16.10.2018
20:30:50
VS13
везет, у меня на одном проекте VS2012 сложно с С++17 переключатся

Alexen
16.10.2018
20:30:54
Странная реакция
реакция человека который весь этот код годами сопровожал

Alexen
16.10.2018
20:32:22
мб

olologin
16.10.2018
20:35:29
Короче нестабильность при -O0 не воспроизводится

а при -O3 есть

С каждым днём все интереснее в чём же проблема

Alexen
16.10.2018
20:36:12
-O2 надо юзать

-O3 это для совсем отчаянных

olologin
16.10.2018
20:36:34
А не

подожди

Alexander
16.10.2018
20:36:38
о, снова свидетели О3 опасносте

olologin
16.10.2018
20:36:41
там -O2 и было

Я ошибся

При -O2 нестабильность тоже есть

Ща попробую -O1 может

Alexander
16.10.2018
20:37:28
может у вас там UB где-то :)

я бы просто попробовал без оптимизаций

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