Re[5]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Stanislaw K СССР  
Дата: 23.02.24 11:48
Оценка: 1 (1) +1
Здравствуйте, Pavel Dvorkin, Вы писали:


SK>>Уже практически норма, когда реакция приложения на ввод одной буквы с клавиатуры больше 300мс.


PD>Когда для обработки нажатия клавиши надо привлечь


Кому надо и зачем?

По моему, это большой красный плакат, на котором "разработчики" ПО, все поголовно, расписываются в своей проф. непригодности.

Отрасль станет только лучше, если каждого второго "разработчика" выгнать на мороз с волчьим билетом. Даже (и особенно) не разбираясь имеет ли этот конкретно разработчик непосредственно личную причастность к происходящему.
Все проблемы от жадности и глупости
Re[7]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Pavel Dvorkin Россия  
Дата: 23.02.24 12:02
Оценка: +2
Здравствуйте, karbofos42, Вы писали:

K>Ну, у меня был комп с 256 МБ оперативы. Официальный клиент в жрал что-то около 20 МБ. QIP раза в 4 меньше, ещё и субъективно удобнее был.


У меня тоже был такой, но намного, само собой, позже. И да, ICQ там занимал сколько-то Мбайт.

PD>>Итого в результате обмена нескольких Кбайт (небольшая переписка) добавилось 18 Мбайт.


K>Кроме переписки там и история сообщений подгрузилась с картинками, превьюшками ссылок и т.п


Вся твоя история сообщений (с одним человеком) едва ли и на 100 Кбайт понянет. Ты сначала эти 100000 символов набери, а потом поговорим.

А картинки — ну да. Только вот в мессенджере хватит и тумбиналов, а сами картинки спокойно могут подгружаться, когда надо. Ты даже на 50 картинок одновременно смотреть не сможешь.

Там ведь не только картинки, там и видео может быть на десятки Мб, если не больше. Их тоже нужно все в ОП хранить ?

PD>>Что и требовалось доказать.


K>Ну, да. Наглядная иллюстрация подхода "Но пусть все это другое сидит на диске, пока не потребуется.".


Не понял. Он тебе не нравится ?

K>Если не переписывали, а стало жрать больше памяти, значит дело не в том, что разучились писать.

K>Компиляторы может память не жалеют, в ОС поменяли планировщик памяти или ещё что привело к повышенному потреблению.

Планировщик серьезно не меняли. А вот сами контролы переписали, да и стек тоже. Раньше все было ясно : user32.dll -> win32k.sys . Или kernel32.dll -_ntdll.dll -> ntoskrl.exe/ А сейчас чего-то там накрутили

K>Итого имеем стандартный Notepad, который написан под WinAPI и использует стандартные библиотеки и контролы, но у него за годы выросло потребление памяти в разы.

K>А те же мессенджеры используют Qt или ещё что-то для кроссплатформенности, т.к. нужно и винду и линукс и в веб ещё засунуть.
K>В той же ICQ не было никакого оформления сообщений (смайлики просто через замену символов работали). Сейчас и картинки можно со стикерами и markdown.

Да уж. Чтобы добавить картинки небольшого размера, надо потребление памяти увеличить на 2 порядка.


K>Мало кому заплатят денег под нативную реализацию для всех платформ. Обычно берётся что-то универсальное с кучей лишнего.


А вот это верно. Жертва качества за счет удовлетворения требований по скорости разработки, требованиям заказчика и т.д. Эффективность — в последнюю очередь, когда уж припрет.


K>Думаю, что основное там — это библиотеки для GUI и т.п. Иначе не знаю чего там в ICQ напихали, что exe занимает больше 100 МБ. Хотя Qt отдельно 26 МБ лежит.


Это то выяснить несложно, посмотреть структуру EXE. Но не в этом дело. Если там 90% ресурсов, то ничего страшного нет. Понятно, что картинки надо где-то хранить, объем памяти при этом фиксирован. Вот только почему в ОП ?

K>20 лет назад кроссплатформа не так важна была и людям платили за разработку на WTL, MFC или голом WinAPI.

K>Сейчас на меня как на идиота посмотрят, если что-то из этого предложу.

Да, увы, тут ты прав.
With best regards
Pavel Dvorkin
Re: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Pavel Dvorkin Россия  
Дата: 23.02.24 12:12
Оценка:
Здравствуйте, Shmj, Вы писали:

Голосование по эффективности и расходам ресурсов

https://rsdn.org/poll/9966
Автор: Pavel Dvorkin
Дата: 23.02.24
Вопрос: Надо обработать большой массив по не совсем тривиальному алгоритму. Можно создать его копию, можно и не создавать. На написание кода с копией уйдет час Вашего времени, без копии — 4 часа. Что предпочтете ?
With best regards
Pavel Dvorkin
Re[2]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Carc Россия https://vk.com/gosha_mazov
Дата: 23.02.24 12:54
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Shmj, Вы писали:


PD>Голосование по эффективности и расходам ресурсов


PD>https://rsdn.org/poll/9966
Автор: Pavel Dvorkin
Дата: 23.02.24
Вопрос: Надо обработать большой массив по не совсем тривиальному алгоритму. Можно создать его копию, можно и не создавать. На написание кода с копией уйдет час Вашего времени, без копии — 4 часа. Что предпочтете ?

Павел, «ну кто так строит» (ц).

Надо обработать большой массив по не совсем тривиальному алгоритму. Можно создать его копию, можно и не создавать. На написание кода с копией уйдет час Вашего времени, без копии — 4 часа. Что предпочтете ?

Насколько большой? Что за алгоритм (модифицирует массив или нет)?
Массив большой это что — по памяти или по числу элементов?

Имхо, тут сразу же всё упрется в структуры данных (векторы, деки, списки односвязные или двухсвязные) ну и.т.д.
А мы ж прекрасно понимаем, что структуры данных и алгоритмы обработки идут рука об руку. Для одних алгоритмов хороши одни структуры памяти, а для других другие (я в смысле идиомы: бинарный поиск азмЪ езмЪ гут, но уже извольте отсортированный массив подать).
Тут сразу же вспоминается Скотт Мейерс, с его клевыми рецептами.

А по сути я б сам сделал иначе в архитектурном плане.
Разделил бы реализации, и доступ к ним.
Handle_Array_WithCopy(MyArray& ar);//функция с созданием копии
Handle_Array_NOCopy(MyArray& ar);//функция без копии

//общая функция - суть фасад, она сама выбирает какую реализацию звать. 
//А уж как выбирает - в рантайме, в дизайн-тайме, мрачно хардкодно - это уже детали
//Главное: эта фасадная функция скрывает доступ к деталям реализации
//PS: потом можно и открыть доступ к реализационным функциями отдельно.
//Главное в другом: по умолчанию реализацию лучше держать закрытой, и скрывать детали выбора 
//- чтоб через единственную точку доступа все шло - а именно через фасадную Handle_Array(MyArray& ar);
Handle_Array(MyArray& ar);


Доводилось такое применять в боевом коде, при конверташке строк в разных кодировках туда-сюда-обратно.
Aml Pages Home
Re[2]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: karbofos42 Россия  
Дата: 23.02.24 14:02
Оценка: 1 (1) +2
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Голосование по эффективности и расходам ресурсов


Зависит от кучи факторов.
Одно дело если это какая-то достаточно редкая функция.
Например, пользователь раз в месяц пользуется импортом из какого-то файла и там вызывается эта функция.
В итоге либо оптимизированный метод потратит 100 МБ памяти и 30 секунд процессорного времени, либо с копией — 200 МБ и 50 секунд.
В этом случае я напишу на копии, т.к. тут меньше шансов ошибиться самому и другим.
Сегодня я массив не редактирую и всё хорошо. Завтра в другом месте этот массив кто-то использует и опять всё хорошо.
Послезавтра ещё кто-то начнёт его редактировать и всё начнёт падать с непонятными ошибками.
Если же это часто вызываемая функция и в результате либо у пользователя периодические фризы, либо всё гладко будет работать, то там можно и неделю на оптимизацию потратить.
Re[7]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: student__  
Дата: 23.02.24 14:18
Оценка: -1
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Хорошая архитектура тем и отличается от плохой, что добавление фич ее не портит.

Только в обозримом будущем, универсальных архитектур навсегда не существует.
Как для приложений, так и для фреймворков.
Re[2]: Что наиболее быстро развивается? Замедлились ли телеф
От: student__  
Дата: 23.02.24 14:34
Оценка: 1 (1) +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>https://rsdn.org/poll/9966
Автор: Pavel Dvorkin
Дата: 23.02.24
Вопрос: Надо обработать большой массив по не совсем тривиальному алгоритму. Можно создать его копию, можно и не создавать. На написание кода с копией уйдет час Вашего времени, без копии — 4 часа. Что предпочтете ?


Конечно же, с копией. Потому что современная методология разработки ПО рассчитана на минимизацию длительности цикла разработки.
Эти 3 часа задерживают работу всех остальных отделов и команд, а если в результате окажется, что потребление памяти выходит за рамки, доступные в целевой системе,
всегда можно соптимизировать реализацию потом.

Понятно, что если речь о какой-то встраивальщине, где физически не может быть достаточно памяти для копии массива, не имеет смысл реализация с копией,
но для системы общего назначения это не так, и даже в системах, в в принципе встроенные, но в которых довольно много памяти (не тупые микроконтроллеры, а мультимедийная часть инфотейнмент в авто), всегда каждая команда априори считает, что в их распоряжении вся память, доступная в системе для приложений, и оптимизационные мероприятия проводятся только если кому-то в процессе разработки этой памяти не хватает.
Отредактировано 23.02.2024 14:36 student__ . Предыдущая версия .
Re[3]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Pavel Dvorkin Россия  
Дата: 23.02.24 14:37
Оценка: +1
Здравствуйте, Carc, Вы писали:

C>Надо обработать большой массив по не совсем тривиальному алгоритму. Можно создать его копию, можно и не создавать. На написание кода с копией уйдет час Вашего времени, без копии — 4 часа. Что предпочтете ?

C>[/q]
C>Насколько большой? Что за алгоритм (модифицирует массив или нет)?

Я специально не стал конкретизировать. Вопрос такой — сделаете копию, если без копии сделаете за 4 часа, а с ней — за час ? Не важно, что там, время на разработку указано.


C>Массив большой это что — по памяти или по числу элементов?


А что, это не связано одно с другим как elems.size*sizeof(elem) ?

C>Имхо, тут сразу же всё упрется в структуры данных (векторы, деки, списки односвязные или двухсвязные) ну и.т.д.


Не важно. Вы можете за 1 час/ 4 часа сделать с ними или без них, быстрее не сможете.
With best regards
Pavel Dvorkin
Re[3]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Pavel Dvorkin Россия  
Дата: 23.02.24 14:42
Оценка: 1 (1)
Здравствуйте, karbofos42, Вы писали:

K>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Голосование по эффективности и расходам ресурсов


K>Зависит от кучи факторов.

K>Одно дело если это какая-то достаточно редкая функция.
K>Например, пользователь раз в месяц пользуется импортом из какого-то файла и там вызывается эта функция.
K>В итоге либо оптимизированный метод потратит 100 МБ памяти и 30 секунд процессорного времени, либо с копией — 200 МБ и 50 секунд.
K>В этом случае я напишу на копии, т.к. тут меньше шансов ошибиться самому и другим.
K>Сегодня я массив не редактирую и всё хорошо. Завтра в другом месте этот массив кто-то использует и опять всё хорошо.
K>Послезавтра ещё кто-то начнёт его редактировать и всё начнёт падать с непонятными ошибками.
K>Если же это часто вызываемая функция и в результате либо у пользователя периодические фризы, либо всё гладко будет работать, то там можно и неделю на оптимизацию потратить.

Нет шансов ошибиться (ну почти , после функции этот массив никому не нужен. Чистый код. На входе массив, на выходе результат. Массив забываем, результат используем.
With best regards
Pavel Dvorkin
Re[8]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: karbofos42 Россия  
Дата: 23.02.24 14:44
Оценка: 2 (2)
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А картинки — ну да. Только вот в мессенджере хватит и тумбиналов, а сами картинки спокойно могут подгружаться, когда надо. Ты даже на 50 картинок одновременно смотреть не сможешь.


Если источник картинки отдельный механизм превьюшек не предоставляет, то придётся таки загрузить картинку, сформировать в памяти ужатый вариант для отображения пользователю, а полноразмерное выкинуть из памяти. Но программа всё равно вряд ли сразу память назад отдаст, подержит на всякий случай ещё какое-то время.
Ну, и кроме картинки, нужно загрузить библиотеку, которая умеет работать с набором в 100500 популярных графических форматов. Некоторые ещё и анимированные и там дополнительный механизм нужен.
Да и сама возможность прикладывать картинки усложняет формат передачи данных и увеличивает потребление памяти.
Можно один и тот же текст сохранить в txt и rtf и удивляться, что rtf больше занимает, хотя никакое форматирование не используется.

PD>Там ведь не только картинки, там и видео может быть на десятки Мб, если не больше. Их тоже нужно все в ОП хранить ?


Видео даже при воспроизведении по-моему никто в памяти не хранит, а используют потоковую подгрузку нужных частей.

PD>Не понял. Он тебе не нравится ?


Нравится. И нравится, что оно "само" работает, не нужно особо вручную ничего делать.

PD>Да уж. Чтобы добавить картинки небольшого размера, надо потребление памяти увеличить на 2 порядка.


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

PD>А вот это верно. Жертва качества за счет удовлетворения требований по скорости разработки, требованиям заказчика и т.д. Эффективность — в последнюю очередь, когда уж припрет.


Ну, это всегда так было. То под железо ужимались, упрощали и оптимизировали. Сейчас несколько другие критерии, но качество всегда страдало.

PD>Это то выяснить несложно, посмотреть структуру EXE. Но не в этом дело. Если там 90% ресурсов, то ничего страшного нет. Понятно, что картинки надо где-то хранить, объем памяти при этом фиксирован. Вот только почему в ОП ?


Если на каждый чих бежать на диск, выкачивать очередную небольшую *.ico, потом выбрасывать её из памяти, то пользы от этого никакой не будет.
Для меня самого непривычно качать мессенджер на 300 МБ, ведь когда-то жесткий диск компа был на 200 МБ.
Но объективно на фоне современных объёмов ОЗУ это достаточно мало.
Когда-то на плюсовиков смотрели как на транжир, которые на свои бесполезные классы кучу памяти тратят.
Сейчас плюсовики уже выделываются тем какой у них язык нативный и ничего лишнего.
Re[3]: Что наиболее быстро развивается? Замедлились ли телеф
От: Pavel Dvorkin Россия  
Дата: 23.02.24 14:47
Оценка: 3 (1) +1
Здравствуйте, student__, Вы писали:

__>Конечно же, с копией. Потому что современная методология разработки ПО рассчитана на минимизацию длительности цикла разработки.

__>Эти 3 часа задерживают работу всех остальных отделов и команд, а если в результате окажется, что потребление памяти выходит за рамки, доступные в целевой системе,
__>всегда можно соптимизировать реализацию потом.


А не зря я дал 1 и 4 часа.

Вот если бы сказал — 1 день и 4 дня, тогда да, задержит работу, может быть. И то если график напряженный, а проект небольшой. Если проект на полгода — ничего не задержит. Будут тебе 23 февраля/8марта/1мая и что, вся работа полетит ?

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


__>Понятно, что если речь о какой-то встраивальщине, где физически не может быть достаточно памяти для копии массива, не имеет смысл реализация с копией,

__>но для системы общего назначения это не так, и даже в системах, в в принципе встроенные, но в которых довольно много памяти (не тупые микроконтроллеры, а мультимедийная часть инфотейнмент в авто), всегда каждая команда априори считает, что в их распоряжении вся память, доступная в системе для приложений, и оптимизационные мероприятия проводятся только если кому-то в процессе разработки этой памяти не хватает.

Вот поэтому мы и имеем то, что имеем.
With best regards
Pavel Dvorkin
Re[9]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Pavel Dvorkin Россия  
Дата: 23.02.24 21:00
Оценка:
Здравствуйте, karbofos42, Вы писали:

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


Придется. А вот отдаст или нет — это от программиста зависит. Если delete в С++ сделать — VM Size точно уменьшит. Из working set может, и не сразу удалит, но раньше или позже тоже.

K>Ну, и кроме картинки, нужно загрузить библиотеку, которая умеет работать с набором в 100500 популярных графических форматов. Некоторые ещё и анимированные и там дополнительный механизм нужен.


Ох, что-то плохо верится в 100500. Их с десяток популярных, не больше. А прочие могут сидеть на диске и ждать, когда понадобится какой-то pcx распарсить.

Кстати, код занимает на удивление мало места. Попробуй dumpbin на любую DLL и увидишь сам. Основное — .data и .resource


K>Да и сама возможность прикладывать картинки усложняет формат передачи данных и увеличивает потребление памяти.


Что тут за такое усложнение ? Принять ее как файл (а она и передается как файл), записать на диск и ждать, пока ее не попросят показать

K>Можно один и тот же текст сохранить в txt и rtf и удивляться, что rtf больше занимает, хотя никакое форматирование не используется.


PD>>Там ведь не только картинки, там и видео может быть на десятки Мб, если не больше. Их тоже нужно все в ОП хранить ?


K>Видео даже при воспроизведении по-моему никто в памяти не хранит, а используют потоковую подгрузку нужных частей.


Верно. Потому что не поместится, это понимают. А картинки поместятся. Вот и не экономят. А памяти нужно все больше и больше...


PD>>Да уж. Чтобы добавить картинки небольшого размера, надо потребление памяти увеличить на 2 порядка.


K>Ну, можно и на отображении текста больше памяти тратить.

K>Когда-то на моноширных шрифтах сидели и нормально, а сейчас не только символы различных размеров могут быть, но и кернинги всякие реализовали.

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


K>Ну, это всегда так было. То под железо ужимались, упрощали и оптимизировали. Сейчас несколько другие критерии, но качество всегда страдало.


+1

PD>>Это то выяснить несложно, посмотреть структуру EXE. Но не в этом дело. Если там 90% ресурсов, то ничего страшного нет. Понятно, что картинки надо где-то хранить, объем памяти при этом фиксирован. Вот только почему в ОП ?


K>Если на каждый чих бежать на диск, выкачивать очередную небольшую *.ico, потом выбрасывать её из памяти, то пользы от этого никакой не будет.


Почему ? При нынешних скоростях SSD время на подгрузку невелико.

K>Для меня самого непривычно качать мессенджер на 300 МБ, ведь когда-то жесткий диск компа был на 200 МБ.

K>Но объективно на фоне современных объёмов ОЗУ это достаточно мало.

Именно. Бери сколько можешь. Было бы сейчас не больше 1 Гб ОЗУ — хватило бы и его.


K>Когда-то на плюсовиков смотрели как на транжир, которые на свои бесполезные классы кучу памяти тратят.

K>Сейчас плюсовики уже выделываются тем какой у них язык нативный и ничего лишнего.

А это они всегда говорили. Я в том числе
With best regards
Pavel Dvorkin
Re[4]: Что наиболее быстро развивается? Замедлились ли телеф
От: student__  
Дата: 23.02.24 21:09
Оценка: 1 (1) +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А 4 часа работу не задержат


Я бозначил общий подход, то, что разработчик с опытом в большом проекте (и не вчерашний студент) скорее всего выберет.
Чем больше и сложнее проект, тем больше в нём людей, и тем меньше свободы у того, кто занимается непосредственно реализацией.
В достаточно большой команде есть специальные люди, которые ничем другим не занимаются, кроме как вопросами анализа производительности.
Иногда для этого даже нанимаются сторонние фирмы.
К тому же, один программист может одновременно работать в нескольких проектах, и тогда 3 часа имеют значение, потому что если проекта 3, то 3 часа превращаются в 9, а это уже больше одного рабочего дня.
Re[4]: Что наиболее быстро развивается? Замедлились ли телеф
От: Carc Россия https://vk.com/gosha_mazov
Дата: 23.02.24 21:18
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Carc, Вы писали:


C>>Надо обработать большой массив по не совсем тривиальному алгоритму. Можно создать его копию, можно и не создавать. На написание кода с копией уйдет час Вашего времени, без копии — 4 часа. Что предпочтете ?

C>>[/q]
C>>Насколько большой? Что за алгоритм (модифицирует массив или нет)?

PD>Я специально не стал конкретизировать. Вопрос такой — сделаете копию, если без копии сделаете за 4 часа, а с ней — за час ? Не важно, что там, время на разработку указано.

Ну я поэтому и написал, что сделал бы через фасадную функцию обработки массива. А та уж будет как-то выбирать функцию реализации.
А эти самые несколько разных функций разных реализаций будут работать по-разному. В зависимости от требований и главное их сочетаний: надежность, скорость, требования к памяти, как часто используется. Как верно написал _student, как часто оный функционал вовсе нужен пользователю (импорт\экспорт раз в месяц, или по 3 раза за минуту).
Мысль была в том, чтобы скрыть за фасадом выбор конкретных реализаций. Оставить себе свободу выбора на будущее, и в то же время полностью контролировать выбор в конкретный момент.

Простая истина проектирования: чем позже принято архитектурное решение, тем у него больше шансов оказаться верным. Т.к. больше информации для верного выбора верной реализации.


C>>Массив большой это что — по памяти или по числу элементов?


PD>А что, это не связано одно с другим как elems.size*sizeof(elem) ?

В математике связано. У пользователя нет. У пользователя нет математики: у него более приземленные понятия (быстро, надежно, тормозит\не тормозит, вызывает в UI какие-нить фризы и.т.д). И вот тут вот и всплывает то самое магическое sizeof(elem). Если там sizeof(long), то вроть и пофиг (для конечного пользователя системы), а если там sizeof(нихрена_себе_PFF-ка_с_жесткого диска), то очень даже и есть разница.
Дьявол — он в деталях. Универсального подхода здесь нет.
Aml Pages Home
Отредактировано 23.02.2024 21:21 Carc . Предыдущая версия . Еще …
Отредактировано 23.02.2024 21:20 Carc . Предыдущая версия .
Re[5]: Что наиболее быстро развивается? Замедлились ли телеф
От: karbofos42 Россия  
Дата: 23.02.24 22:50
Оценка: +1
Здравствуйте, student__, Вы писали:

__>Я бозначил общий подход, то, что разработчик с опытом в большом проекте (и не вчерашний студент) скорее всего выберет.

__>Чем больше и сложнее проект, тем больше в нём людей, и тем меньше свободы у того, кто занимается непосредственно реализацией.

Либо в большом проекте наоборот меньше слежки за каждым разработчиком, чем-то вроде занимается, таски делает и никто с секундомером над ним не стоит.
Вчерашний студент хочет показать хорошую производительность и быстрее стремится закрыть задачу.
Опытный разработчик устал от рутины, никуда не спешит и может себе позволить несколько часов посидеть над алгоритмической задачей, чтобы нагрузить мозги.
Re[4]: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.02.24 04:01
Оценка: 1 (1) :))
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Нет шансов ошибиться (ну почти , после функции этот массив никому не нужен.

Вооот, начинаются дополнительные ограничения.
"я забыл сказать — жителями этого дома будет семья глухонемых жирафов".
Наверняка ещё есть какое-нибудь невинное ограничение вида "предположим, что это именно C-style массив, то есть набор значений, плотно уложенных в непрерывной области памяти".
И всякие там произвольные уточнения вида "нет, мы не знаем, какую именно долю этого массива затрагивают изменения нашей функцией", "у нас есть гарантия того, что в параллельном потоке никто с этим массивом не работает ни на чтение, ни на запись", и т.п.

Насколько надёжно ваше доказательство того, что "после функции этот массив никому не нужен"?
Насколько надёжно предположение о том, что это не изменится в будущем?
Сможете ли вы написать код так, чтобы
а) использовалась in-place модификация
б) в случае, если окружающий код будет модифицирован так, что ссылка на оригинальный массив станет использоваться после вызова этой функции, то это вызовет compile-time error или иным способом защитит будущего программиста от выстрела себе в ногу?
в) даже если сможете — станете ли вы писать код именно таким способом, или самонадеянно нахреначите in-place версию, надеясь на авось?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Что наиболее быстро развивается? Замедлились ли телеф
От: mike_rs Россия  
Дата: 24.02.24 09:10
Оценка: 2 (1)
Здравствуйте, Pavel Dvorkin, Вы писали:

__>>Понятно, что если речь о какой-то встраивальщине, где физически не может быть достаточно памяти для копии массива, не имеет смысл реализация с копией,

__>>но для системы общего назначения это не так, и даже в системах, в в принципе встроенные, но в которых довольно много памяти (не тупые микроконтроллеры, а мультимедийная часть инфотейнмент в авто), всегда каждая команда априори считает, что в их распоряжении вся память, доступная в системе для приложений, и оптимизационные мероприятия проводятся только если кому-то в процессе разработки этой памяти не хватает.

PD>Вот поэтому мы и имеем то, что имеем.


нет, не поэтому. В разработке ПО участвует не только программист. Он тут появляется уже на третьих ролях, как ни странно звучит. Сначала идут требования бизнеса — надо сделать вот это, мы это готовы продать за много денег, есть заказчики и сроки. Потом идут менеджеры/аналитики, которые говорят, что да, можно взять вот ту систему, добавить вот такой модуль и требования бизнеса закроются. Сроки — вот такие с учетом разработки и тестирования. И только теперь задача попадает к программисту, которому надо написать конкретный кусок кода в четкие сроки. Не уложишься — и твой супер красивый и быстрый код станет НИКОМУ НЕ НУЖЕН, потому что его некому продать, нишу заняли конкуренты, которые успели. А вот когда успели и продали, но например на машинах заказчика работает медленно, то тогда приходит команда перфоманс анализа, ищет те самые узкие места которые нужно оптимизировать здесь и сейчас и только потом снова идут к программисту с конкретным заданием. А если заказчика все устраивает, то вопрос оптимизации даже не возникнет, потому что некому будет платить за этот банкет. Вот как-то так — имеем то что имеем, потому что бизнес считает, что дешевле — потратить время на оптимизацию или купить железо покруче. И если железо дешево, то зачем оптимизировать, теряя деньги? Раньше же, в эпоху баснословно дорогого железа, упор был на оптимизацию, она стоила дешевле. Вот и все.
Re[5]: Что наиболее быстро развивается? Замедлились ли телеф
От: Pavel Dvorkin Россия  
Дата: 24.02.24 09:26
Оценка: -2
Здравствуйте, mike_rs, Вы писали:

_>нет, не поэтому. В разработке ПО участвует не только программист. Он тут появляется уже на третьих ролях, как ни странно звучит. Сначала идут требования бизнеса — надо сделать вот это, мы это готовы продать за много денег, есть заказчики и сроки.


Эти требования святой дух определил ? Сроки и прочее. Нет, они на основе предыдущих разработок сделаны.

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


Менеджерам и аналитикам эту информацию святой дух выдал ? Нет, они тоже основываются на предыдущих разработках.

>Сроки — вот такие с учетом разработки и тестирования. И только теперь задача попадает к программисту, которому надо написать конкретный кусок кода в четкие сроки. Не уложишься — и твой супер красивый и быстрый код станет НИКОМУ НЕ НУЖЕН, потому что его некому продать, нишу заняли конкуренты, которые успели. А вот когда успели и продали, но например на машинах заказчика работает медленно,


А заказчику святой дух объяснил, что тут медленно, и что нет ? Нет опять же, он на основе тех программ , что видел, делает свои предположения, сколько времени на что надо ?

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


Ни требования, ни менеджеры с аналитиками, ни заказчики не могут ответить на вопрос — сколько каких ресурсов надо потратить на ту или иную операцию. Аналитики еще что-то могу, потому что они зачастую бывшие программисты, а остальные только могут исходить из аналогичного. А аналогичное писалось так же, как и предыдущее аналогичное, вот только ресурсов стало побольше и тратить их можно свободнее.

Только программист может сказать, что и как тут можно сделать, если сделать качественно, памятью не сорить, лишнее не делать и т.д. И сколько — если сделать по принципу "это должно было быть готово вчера"

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

Мы сами их приучили так делать.
With best regards
Pavel Dvorkin
Re: Что наиболее быстро развивается? Замедлились ли телефоны?
От: Mr.Delphist  
Дата: 24.02.24 11:00
Оценка:
Здравствуйте, Shmj, Вы писали:

S>А что телефоны? В 2014 достаточно было 2 Гб ОЗУ и 32 Гб диска — сейчас нужно минимум 6 Гб ОЗУ и 128 Гб диска. Ну в 4 раза примерно, уже не так стремительно. Некоторые считают, что сейчас можно брать телефон на 10 лет, что в 2034 особо ничего не изменится, т.к. все уже есть и особо развивать некуда.


Сейчас всё в батарейку упирается — да, можно было бы запихнуть убер-процессор, растащить экран ещё лопатнее, но смысл, если оно будет помирать через пару часов. Т.е. можно превратить смартфон "в троллейбус, но зачем?" (ц)
Re[6]: Что наиболее быстро развивается? Замедлились ли телеф
От: mike_rs Россия  
Дата: 25.02.24 08:19
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

_>>нет, не поэтому. В разработке ПО участвует не только программист. Он тут появляется уже на третьих ролях, как ни странно звучит. Сначала идут требования бизнеса — надо сделать вот это, мы это готовы продать за много денег, есть заказчики и сроки.


PD>Эти требования святой дух определил ? Сроки и прочее. Нет, они на основе предыдущих разработок сделаны.


ты еще раз прочти написанное выше. на пальцах — есть заказчик с конкретной задачей, при решении которой в те сроки, что требуются заказчику, он (заказчик) готов за это заплатить чемодан денег. Вот тебе пример откуда идут требования и сроки.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.