Информация об изменениях

Сообщение Re[3]: Как бы вы делали эту задачу (переходим к конкретике). от 04.09.2022 22:36

Изменено 04.09.2022 22:55 gandjustas

Re[3]: Как бы вы делали эту задачу (переходим к конкретике)...
Здравствуйте, Shmj, Вы писали:

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


G>>Вот решение https://github.com/gandjustas/HugeFileSort


S>Сортировка в 2.5 раза медленнее у вас, чем этот вариант: https://rsdn.org/forum/alg/8351025.1
Автор: artelk
Дата: 04.09.22


Сделано в предположение, что файлы ASCII

Это слишком сильное предположение как по мне. Хотя как раз на строки (преобразование и уборка мусора) тратится почти половина не-IO времени.
Если рассматривать строки как ascii, то можно zero-allication код сделать, который будет до 10 раз быстрее там где не-IO. Но все равно хороший ССД даст прирост по скорости больше чем микрооптимизации.

S>Задание одно и тоже.

По факту нет. Разница unicode и ascii строк огромная.

S>Требования всем понятны.

Требования для этой задачи не полны, увы. В том числе требования быстродействия.

S>А вот как решить оптимально — вот это хрен знает. Нужна компетенция колоссальная.

Какой параметр мы оптимизируем?
Если время работы программы, то можно взять наивную реализацию на питоне или .net и поставить диски побыстрее.
Если затраты суммарные затраты, то непонятно как оценивать разницу во времени работы даже в два раза.
Если процессорное время или затраты памяти, то надо переписывать на С\C++\Rust и отказаться от управляемых сред.

Вообще само определение критерия оптимальности может занять те самые 85% времени.
Re[3]: Как бы вы делали эту задачу (переходим к конкретике).
Здравствуйте, Shmj, Вы писали:

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


G>>Вот решение https://github.com/gandjustas/HugeFileSort


S>Сортировка в 2.5 раза медленнее у вас, чем этот вариант: https://rsdn.org/forum/alg/8351025.1
Автор: artelk
Дата: 04.09.22


Сделано в предположение, что файлы ASCII

Это слишком сильное предположение как по мне. Хотя как раз на строки (преобразование и уборка мусора) тратится почти половина не-IO времени.
Если рассматривать строки как ascii, то можно zero-allication код сделать, который будет до 10 раз быстрее там где не-IO. Но все равно хороший ССД даст прирост по скорости больше чем микрооптимизации.

S>Задание одно и тоже.

По факту нет. Разница unicode и ascii строк огромная.

S>Требования всем понятны.

Требования для этой задачи не полны, увы. В том числе требования быстродействия.

S>А вот как решить оптимально — вот это хрен знает. Нужна компетенция колоссальная.

Какой параметр мы оптимизируем?
Если время работы программы, то можно взять наивную реализацию на питоне или .net и поставить диски побыстрее.
Если суммарные затраты в денежном эквиваленте, то непонятно как оценивать разницу во времени работы даже в два раза.
Если процессорное время или затраты памяти, то надо переписывать на С\C++\Rust и отказаться от управляемых сред.

Вообще само определение критерия оптимальности может занять те самые 85% времени.