Сравнение эффективности PascalABC.NET и C#


#21

Ну, потому что мне он пока что не нужен был)))

Он же никуда не денется)). Я сейчас на море, здешний полудохлый wifi стараюсь не насиловать без причины.


#22

А, понял.


#23

Дайте ссылки на исходник паскаля и cs. Два раза это не верится. Лучше выложите прямо сюда


#24

исходники C#
исходники паскаля


#25

А, понятно. Там с указателями. Может быстрее. Мы это не оптимизировали. И потом это возможно наверное написать оптимальнее - я этим давно занимался в ABCObjects по-моему


#26

Там всё по-честному. Коды зеркальны. В той части, которая занимает 90% вычислительной мощности(двумерные свёртки) указателей нет вообще. Пока что.


#27

Ну не совсем. В паскале используется ОМP. Во что оно там генерится, остается только догадываться.


#28

Кстати, такое ускорение появляется при добавлении в параметрах компилятора -optimize. Так что - два варианта: компилятор проводит дикую оптимизацию либо, как говорил Иван Бондарев, оптимизирует JIT, а компилятор даёт ему на это разрешение.


#29

GC.Collect добавляет недетерминизма. И такое ощущение, что уродливый паскалевский for неэффективнее сишного (там джампов больше).


#30

OMP не было задействовано. Для Паскаля - стиль C# - чистый .NET.


#31

Ну вы надеюсь паскалевскую программу с отключенной галочкой “генерировать отладочную информацию” компилировали?


#32

Возможно, это ближе к истине.


#33

Обижаете :smile: Она всегда отключена!


#34
 {$OMP Parallel For}
      for Var y := 0 to Height - 1 do

#35

Да, но это в нормализации изображения. Это не может давать разницу в 30 с лишним секунд, максимум 100 мс. В тех местах, где выполняются ресурсоёмкие операции стоит чистый .NET. Час назад обновил код - OMP заменён на .NET. От Паскаля остался лишь базовый синтаксис. FastNeuralColor.pas (55,7 КБ)


#36

Кстати, касательно указателей, Паскаль и правда там темнит. Например - работа с динамическим массивом без фиксации по указателям не приводит к ошибкам из-за сборщика мусора, хотя в C# это происходит всегда.


#37

Ну почему, для этого есть декомпиляторы.

Что то не складывается. Не может это происходить каждый раз - сборка мусора не так часто выполняется. Но и не может это вообще не происходить. Это так - раз в несколько сек/мин/часов, если бесконечный цикл поставить. Зависит, наверное, от того - сколько оперативной памяти загружено.


#38

В Паскале не было НИ РАЗУ. Слава Богу.


#39

Но вот дымовая завеса от PABCSystem несколько осложняет задачу… :face_with_monocle:


#40

Ну при чём тут она. Она в отдельном файле генерируется после декомпиляции)). Вы попробуйте, а потом уже говорите.