Об отвратительном коде
Jan. 23rd, 2014 12:35 amЗаглянул в дебри одного давно существующего проекта, обнаружил кусок кода парсера CSV строк. По номеру поля получает значение поля из строки, разделенной запятыми.
Код работает.
Но он на каждый 1 символ в строке выполняет выделение памяти и копирование строки целиком, за исключением первого символа. Еще он делает подстроку из первого символа и сравнивает ее с разделителем. И это повторяется количество раз, равное номеру поля. А потом он выполняет поиск разделителя в оставшей от предыдущей содомии строки. В итоге, я даже думать не хочу, сколько раз на каждую запись оно долбится в менеджер памяти и трешит кэш проца.
Это все вместо простейшего конечного автомата и получения списка полей за один раз по списку индексов.
Внимание, вопрос: какие меры воздействия на автора этого и подобного ему кода являются этически допустимыми?
Код работает.
Но он на каждый 1 символ в строке выполняет выделение памяти и копирование строки целиком, за исключением первого символа. Еще он делает подстроку из первого символа и сравнивает ее с разделителем. И это повторяется количество раз, равное номеру поля. А потом он выполняет поиск разделителя в оставшей от предыдущей содомии строки. В итоге, я даже думать не хочу, сколько раз на каждую запись оно долбится в менеджер памяти и трешит кэш проца.
Это все вместо простейшего конечного автомата и получения списка полей за один раз по списку индексов.
Внимание, вопрос: какие меры воздействия на автора этого и подобного ему кода являются этически допустимыми?