Skip to content

Commit

Permalink
Merge pull request #7 from sfaqer/feature/staticInitializersPerformance
Browse files Browse the repository at this point in the history
В методах хелперах создания коллекций из набора элементов ускорена производительность путем уменьшения количества выполняемых Вычислить в цикле
  • Loading branch information
sfaqer authored Jan 29, 2025
2 parents 59f6e91 + 811e00b commit cac1e24
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 36 deletions.
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Описание.Имя("collectionos")
.Версия("0.7.1")
.Версия("0.7.2")
.Автор("Кирилл Черненко")
.АдресАвтора("https://github.com/sfaqer")
.Описание("Фреймворк коллекций для OneScript")
Expand Down
17 changes: 10 additions & 7 deletions src/Модули/Карты.os
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,16 @@
Результат = Новый КартаСоответствие;

Для сч = 1 По 10 Цикл
ДобавитьНеПустоеЗначениеВКоллекцию(Результат, Вычислить("Ключ" + сч), Вычислить("Значение" + сч));

Ключ = Вычислить("Ключ" + сч);
Значение = Вычислить("Значение" + сч);

Если Ключ = NULL Или Значение = NULL Тогда
Прервать;
КонецЕсли;

Результат.Вставить(Ключ, Значение);

КонецЦикла;

Возврат Новый ФиксированнаяКарта(Результат);
Expand All @@ -38,9 +47,3 @@
Возврат Новый ФиксированнаяКарта(Результат);

КонецФункции

Процедура ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Ключ, Значение)
Если Ключ <> NULL И Значение <> NULL Тогда
Коллекция.Вставить(Ключ, Значение);
КонецЕсли;
КонецПроцедуры
16 changes: 9 additions & 7 deletions src/Модули/Массивы.os
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,17 @@
Результат = Новый Массив;

Для сч = 1 По 32 Цикл
ДобавитьНеПустоеЗначениеВКоллекцию(Результат, Вычислить("Элемент" + сч));

Значение = Вычислить("Элемент" + сч);

Если Значение = NULL Тогда
Прервать;
КонецЕсли;

Результат.Добавить(Значение);

КонецЦикла;

Возврат Новый ФиксированныйМассив(Результат);

КонецФункции

Процедура ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Значение)
Если Значение <> NULL Тогда
Коллекция.Добавить(Значение);
КонецЕсли;
КонецПроцедуры
18 changes: 10 additions & 8 deletions src/Модули/Множества.os
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Функция ИзЭлементов(
Функция ИзЭлементов(
// BSLLS:NumberOfParams-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UnusedParameters-off
Expand All @@ -17,7 +17,15 @@
Результат = Новый МножествоСоответствие;

Для сч = 1 По 32 Цикл
ДобавитьНеПустоеЗначениеВКоллекцию(Результат, Вычислить("Элемент" + сч));

Значение = Вычислить("Элемент" + сч);

Если Значение = NULL Тогда
Прервать;
КонецЕсли;

Результат.Добавить(Значение);

КонецЦикла;

Возврат Новый ФиксированноеМножество(Результат);
Expand All @@ -40,9 +48,3 @@
Возврат Новый ФиксированноеМножество(Результат);

КонецФункции

Процедура ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Значение)
Если Значение <> NULL Тогда
Коллекция.Добавить(Значение);
КонецЕсли;
КонецПроцедуры
16 changes: 10 additions & 6 deletions src/Модули/Соответствия.os
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,16 @@
Результат = Новый Соответствие;

Для сч = 1 По 10 Цикл
ДобавитьНеПустоеЗначениеВКоллекцию(Результат, Вычислить("Ключ" + сч), Вычислить("Значение" + сч));

Ключ = Вычислить("Ключ" + сч);
Значение = Вычислить("Значение" + сч);

Если Ключ = NULL Или Значение = NULL Тогда
Прервать;
КонецЕсли;

Результат.Вставить(Ключ, Значение);

КонецЦикла;

Возврат Новый ФиксированноеСоответствие(Результат);
Expand All @@ -38,8 +47,3 @@
Возврат Новый Соответствие(Новый ФиксированноеСоответствие(Соответствие));
КонецФункции

Процедура ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Ключ, Значение)
Если Ключ <> NULL И Значение <> NULL Тогда
Коллекция.Вставить(Ключ, Значение);
КонецЕсли;
КонецПроцедуры
16 changes: 9 additions & 7 deletions src/Модули/Списки.os
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,15 @@
Результат = Новый СписокМассив;

Для сч = 1 По 32 Цикл
ДобавитьНеПустоеЗначениеВКоллекцию(Результат, Вычислить("Элемент" + сч));

Значение = Вычислить("Элемент" + сч);

Если Значение = NULL Тогда
Прервать;
КонецЕсли;

Результат.Добавить(Значение);

КонецЦикла;

Возврат Новый ФиксированныйСписок(Результат);
Expand All @@ -40,9 +48,3 @@
Возврат Новый ФиксированныйСписок(Результат);

КонецФункции

Процедура ДобавитьНеПустоеЗначениеВКоллекцию(Коллекция, Значение)
Если Значение <> NULL Тогда
Коллекция.Добавить(Значение);
КонецЕсли;
КонецПроцедуры

0 comments on commit cac1e24

Please sign in to comment.