185 похожих чатов

Я в ходе обсуждения потерял что именно должен искать этот

статический анализ. У меня есть предположение, что "инженерный" способ решения задачи - это переход на динамический анализ.

Соответственно вопрос - какие именно проблемы предполагается искать?

25 ответов

54 просмотра

В целом, я агитирую за композиционный анализ и против whole-program вне зависимости от того, что он ищет. 😊

Alex- Автор вопроса
Alexander Chichigin
В целом, я агитирую за композиционный анализ и про...

Как человек, долго работавший в парадигме whole program, не соглашусь :) поэтому и интересуюсь, из-за чего конкретно сыр-бор

Alex
Как человек, долго работавший в парадигме whole pr...

Я выше описывал свои претензии. Whole-program не масштабируется, что приводит к ряду проблем down the line.

Alex- Автор вопроса
Alexander Chichigin
Я выше описывал свои претензии. Whole-program не м...

Я имею представление о проблемах. Whole-program спокойно тянет несколько миллионов строк плюсового кода (и это в однопоток!). Весь вопрос только в том, на сколько он нужен для решения конкретной задачи

Alexander Chichigin
И что же он там находит? 😊

Несколько миллионов строк плюсового кода и находит.

Alex- Автор вопроса
Alexander Chichigin
И что же он там находит? 😊

У нас он для alias анализа используется, для девиртуализации и inline. Также находит нарушения strict-aliasing. Это то, что навскидку приходит в голову

Alex
У нас он для alias анализа используется, для девир...

Звучит как кусок компилятора. У Вас whole-program C++ compiler?

Alex- Автор вопроса
Alexander Chichigin
Звучит как кусок компилятора. У Вас whole-program ...

Да, это компилятор. Поэтому я и говорю что для whole program надо смотреть, что именно ищется

Alex
Да, это компилятор. Поэтому я и говорю что для who...

Whole-program C++ compiler, который "спокойно тянет несколько миллионов строк кода"?

Alex- Автор вопроса
Alexander Chichigin
Whole-program C++ compiler, который "спокойно тяне...

Скажем так, там есть, куда оптимизировать, но спеки без проблем. Были сложные проекты с проблемами скорости компиляции, но там чисто технические проблемы, которые решились

Alex
У нас он для alias анализа используется, для девир...

девиртуализация? это имеет отношения к vtable?

Alex- Автор вопроса
Artem Hevorhian
девиртуализация? это имеет отношения к vtable?

Опосредованное. Но да, это замена виртуальных вызовов на вызовы по имени

Alex
Скажем так, там есть, куда оптимизировать, но спек...

Кажется, кроме как верить на слово других вариантов нет? 😊

Alex- Автор вопроса
Alexander Chichigin
Кажется, кроме как верить на слово других варианто...

Какой конкретно из пунктов следует подтвердить? То, что спеки 2017 эльбрусовских компилятором собираются в whole program вроде давно известно, при необходимости могу поискать. Не уверен, что там есть тесты более миллиона строк, но более 300 тыс были. Сам себя компилятор, так собирал, а это уже более 2 млн строк. Подтверждений не будет. По внешнему проекту размером более 2 млн строк подтверждений не будет (не могу найти в открытых источниках про какой именно режим они пишут)

Alex- Автор вопроса
Alex
У нас он для alias анализа используется, для девир...

Алекс, вы распараллеливаете? Там стат-анализ используется для отлова разных проблем в OCaml. Поскольку OCaml очень хорошо спроектирован по сравнению с С++, то из PVS-овской кучи ошибок остаётся ну процентов 10. А ведь чем меньше нужно проблем покрывать, тем меньше abstract domain => тем быстрее проходит анализ.

Alex
В несколько раз дольше гцц)

Это не то, что я бы назвал "спокойно тянет", не в контексте статического анализа кода в дополнение к компиляции. 😊

Alex- Автор вопроса
Konstantin Romanov
Алекс, вы распараллеливаете? Там стат-анализ испол...

Нет. По крайней мере на момент несколько лет назад. Но распарралеливание для реальных проектов очень нужно

Alex
Какой конкретно из пунктов следует подтвердить? То...

Это lcc, ваш неуловимый Джо? А начиная с какой версии?

Alex- Автор вопроса
Konstantin Romanov
Это lcc, ваш неуловимый Джо? А начиная с какой вер...

Эммм, на whole-program как базовый режим сборки спеков перешли году в 14-15, наверное

Alex
Нет. По крайней мере на момент несколько лет назад...

Я думаю, что на ОКамле распараллеливание будет проще сделать. Но, насколько я понял, это ещё очень исследовательская задача.

Alex- Автор вопроса
Konstantin Romanov
Я думаю, что на ОКамле распараллеливание будет про...

Задача вполне инженерная, просто рук для неё не хватает

Alex
Задача вполне инженерная, просто рук для неё не хв...

Я не столь оптимистичен. Для этого нужно понимать, как хорошо параллелить fix-point вычисления на типичном control flow graph. То есть, вы, конечно, сможете сделать решётку, бросать какие-то green threads для подсчёта каких-то обновлений на локальных участках кода, но будет ли это эффективно? Не потеряете ли вы на синхронизации больше, чем получите на распараллеливании? Отмечу, что тот же yukari - это 32 потока. Простую-то вещь на Хаскеле на столько не враз распараллелишь.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Раз начали говорить про embassy, то присоединюсь со своими парой вопросов. 1) Есть ли сопоставимые аналоги для асинхронного кода в emdebbed? 2) Можно ли внутри задач embassy ...
NI_isx
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта