Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
364 / 182 / 41
Регистрация: 13.07.2017
Сообщений: 4,854
Записей в блоге: 14

Почему, что бы серьезное я не попытался запрограммировать, везде меня преследуют фундаментальные тормоза?

19.11.2020, 19:13. Показов 3496. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В моей жизни было много проектов. Были примитивные, были и серьезные. И практически во всех серьезных были серьезные тормоза. Причем вне зависимости от сути проекта - это и шахматоподобная игра (она была не на C#, но сути это не меняет), и компрессор файлов, и алгоритм шифрования, и вот теперь язык программирования. (Не знаю, что думают модераторы по поводу уместности этой темы в данном разделе, но я думаю, что это в первую очередь обсуждение проблемы в программировании, а не какого-либо проекта.) В предыдущей моей теме я узнал о профилировании, и мне это понравилось. С помощью самой мощной его формы - инструментирования - я нашел несколько "узких мест" и уменьшил время работы следующей программы (надеюсь, перевести ее на любой удобный вам язык вам не составит труда):
Code
1
2
3
4
5
6
7
8
9
real Function F(unsigned int n)
{
    if (n <= 1)
    {
        return n;
    }
    return IntToReal(n) + F(n - 1);
}
return F(200000);
- в два раза, с 30 секунд до 15. При этом на C# аналогичная программа выполняется 10 МИЛЛИсекунд. Я бы еще понял, если бы ультра-высокоуровневый язык был медленнее высокоуровневого в 10 раз. Ну, в 25 - это на пределе. Но он в ПОЛТОРЫ ТЫСЯЧИ раз медленнее!!! Это ужасающе. Причем нет одной строки кода, которая выполняется 80% времени. Распределение времени выполнения функций имеет такой вид, как на скриншоте. И эта статистика существенно меняется от запуска к запуску. Причем вторая строка с 6.97% - это время простоя. Так что проблема находится не в одной строке, а в чем-то более фундаментальном. Тем более, что это повторяется от проекта к проекту. Так в чем же эта проблема? Вот только прошу не отсылать меня в учебники - это равнозначно, что при возникновении конкретной проблемы с какой-либо программой подряд читать справку. Учебники нужны, чтобы изучить основы, а не чтобы решить конкретную проблему. А основы я знаю, и спорить об этом не хочу. Весь мусор, который можно было убрать, я уже убрал, пиковое количество аллоцированных объектов уменьшилось с 2.6М до 387к. (Во время профилирования в целях экономии времени (а в это время надо не обедать, а активно смотреть в экран) и места на диске глубина рекурсии равна 20000, а не 200000, то есть по 19 объектов на каждый вложенный вызов.) Так в чем же проблема? Код выкладывать нет смысла, так как, как я уже написал, это повторяется от проекта к проекту, тем более что одинаково вы ничего не поймете в моем коде. Надеюсь на понимание.
Миниатюры
Почему, что бы серьезное я не попытался запрограммировать, везде меня преследуют фундаментальные тормоза?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2020, 19:13
Ответы с готовыми решениями:

Синие экраны преследуют меня
Привет Компьютер старый, но до определенного момента работал исправно. win10 pro intel core 2 quad q8300 ОЗУ 4ГБ (3.25...

Различные синие экраны преследуют меня три года
Дело такое: уже очень долгое время мой компьютер перезагружается различными синими экранами. Сначала сидел на Windows 7, потом через...

Почему везде в гугле написано что long = 4 байта
почему везде в гугле написано что long = 4 байта? int же 4 байта, но они же не могут быть равными ! как это понимать? разве long не 8 байт?...

45
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
364 / 182 / 41
Регистрация: 13.07.2017
Сообщений: 4,854
Записей в блоге: 14
19.11.2020, 22:34  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от I2um1 Посмотреть сообщение
StringBuilder с заранее заданным размером.
А если размер заранее не задан? new List<string> { string_ } убрал. Где в моем коде вы увидели конкатенацию строк в цикле?
0
629 / 393 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
19.11.2020, 23:00
Etyuhibosecyu,
Цитата Сообщение от Croessmah Посмотреть сообщение
Возьми и посмотри, какой C# код генерирует твой транслятор.
Ответ был дан. В чем проблема?
0
 Аватар для JustinTime
964 / 582 / 268
Регистрация: 20.12.2016
Сообщений: 1,506
19.11.2020, 23:01
Etyuhibosecyu, посмотрите реализацию компилятора C# https://github.com/dotnet/roslyn
язык который транслируется в C# - Boo https://github.com/boo-lang/boo
Nitra от jetbrains https://github.com/JetBrains/Nitra
0
Эксперт .NET
 Аватар для Usaga
14819 / 9600 / 1369
Регистрация: 21.01.2016
Сообщений: 36,146
20.11.2020, 07:38
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
В предыдущей моей теме я узнал о профилировании,
Проблема именно в этом. Я вас носом ткнул в профилировщик ещё полгода назад, в вашей теме с "компрессором". Показал скриншоты со сводкой по аллоцированию объектов вашим компрессором. Но вы на это положили болта. Так же, вы болта ложите на все советы полезные. Но потом задаётесь вопросом, а почему у вас всё тормозит.

Добавлено через 31 минуту
В той же теме я вас носом ткнул в обилие List<T> в вашем коде и аллокации. И что в итоге? Через полгода вы показываете код, где List<T> ещё больше, даже в условиях есть.

Какой смысл вам давать советы по вашему коду, если вы их игнорируете?
3
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
20.11.2020, 10:42
Etyuhibosecyu, какая разница? Задан, не задан размер. Открыл код, ужаснулся, закрыл. Конкатенации неявно в дочерних методах цикла.

Добавлено через 2 минуты
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
new List<string> { string_ } убрал.
Та это был просто пример. Если в поиске написать слово new с пробелом, подсвечивается весь файл на 4к строк.
2
282 / 485 / 12
Регистрация: 21.06.2019
Сообщений: 3,020
21.11.2020, 12:53
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Почему, что бы серьезное я не попытался запрограммировать, везде меня преследуют фундаментальные тормоза?
Потому что вот поэтому
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Вот только прошу не отсылать меня в учебники - это равнозначно, что при возникновении конкретной проблемы с какой-либо программой подряд читать справку. Учебники нужны, чтобы изучить основы, а не чтобы решить конкретную проблему. А основы я знаю, и спорить об этом не хочу.
Потому что у вас совершенно неадекватные представления об обучении и оценка собственных знаний. Раз у вас фундаментальные тормоза - то это свидетельствует, что вы чего-то не знаете. Или по крайней мере, не умеете своими знаниями пользоваться. По-моему это очевидно. Можно прочитать учебник про написание музыки (интересно, есть такие? ), но композитором вы от этого не станете.
Вам в каждой вашей теме наверное только ленивый не написал, что вы занимаетесь фигней и учитесь не так, как надо. Но вместо того, чтобы признать проблему и начать что-то делать, появляется очередная тема "почему у меня тормоза", "почему миру не нравится что я делаю" и т.д. Пока не измените подход, такие темы так и будут появляться без конца.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2020, 12:53

Почему-то сообщает, что dr closed. Что у меня не так?
Imports System Imports System.Data Imports System.Data.OleDb Imports System.Web.UI.Page Namespace Dict Public Class Word ...

Реклама везде, она меня преследует
здравствуйте , прошу помощи , у меня реклама по всюду выходит, даже в стиме в окне покупке игр, в браузерах и не работает время от времяни...

Таблицы: в числовом поле ввожу 0,5 или 0,6, а у меня везде 0,0
Подскажите пожалуйста в базе данных в таблице в числовом поле ввожу 0,5 или 0,6, а у меня везде 0,0. Подскажите пожалуйста...

Подскажите пожалуйста, что нибудь серьезное для начинающего программиста
Подскажите пожалуйста, что нибудь серьезное для начинающего программиста, чтобы помучаться конкретно, но зато чтобы потом был результат. ...

Попытался выразить дифференциал. Вот что получилось
Попытался выразить дифференциал y={x}^{2}. Вот что получилось. df={f}^{|}*dX df=2X*dX Но на сколько я понимаю дифференциал равен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
46
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru