А Вы откомпилируйте и exe-шку запустите. У меня 3250 мсек на Паскаль, 4000 мсек на C# (наивный) и 2300 мсек на нативный. У меня вот при свободном компьютере такой резалт:
Я так и сделал (студия ваш код в принципе не принимает, говорит для unsafe надо /unsafe).
В вашем батнике используется устаревший компилятор C# (оно пишет об этом при компиляции)
+ там в настройках стоит оптимизировать unsafe, не значит ли это что безопасный будет медленнее? Просто меня удивляет что на C# программа работает на ~20% медлинее чем на паскале.
Ещё раз повторяю, я именно так и сделал. И получил результаты пропорциональные вашим, только раза в 1.5 быстрее (все 3 замера).
Нет никаких 120! Только 106 .
Ну а если серьёзно - это одинаково повлияло бы на все результаты. А считая что оперативки хватает и процессорного времени почти не жрёт - влияние вообще не должен зависеть от этого.
Но вы только что сказали
Это же оба наивные методы, правильно? Почему C# в абсалютно равных условиях вдруг проиграл на 25-30%. И у меня так же при чём. Вот я и думаю, дело в том какой компилятор/режим компилятора использовался.
Да. Был симпатичный коротенький и наглядный код на Паскале. Стоило городить “три километра в гору пешком мимо Гитлера” (с), чтобы получить невнятный (навскидку) код и выгадать 25% производительности?
Это не касается готового кода на паскаля, это лишь проверка, которую попросил @admin. Вы знаете как устроить эту проверку красивее? Кроме того, часть про указатели это только 9 строчек.
Если бы это действительно было лишено смысла, то этим бы никто не пользовался. В каждой статье, посвящённой оптимизации приложений под .NET, затрагивается тема указателей. Если считать, что 20% - это мало, то не надо удивляться тому, что на Паскале программы работают медленнее, причём намного. 20% - это везде 20%. Если такое отношение к оптимизации, то я не думаю, что Паскаль сможет продвинуться дальше, чем школьный курс информатики, где быстродействия Питона хватает за глаза.
Так вроде уже нишу определили, как 90-95% обучение. И не только школьная информатика, первокурсники вузов тоже. А Вы все в том же стиле продолжаете: “Паскаль удобный, но надо, чтобы на нем писать, как на С/С++, ну на С# в худшем случае”. Когда уж Вы поймете, что никто не будет переделывать язык под такие хотелки?
Я не предлагаю писать как на C/C++, я предлагаю оптимизировать язык. Чтобы при паскалевском синтаксисе получить эффективность как на C#. Хватит уже оглядывается на устаревшие реализации языка.
Меня абсолютно не устраивает C/C++, а к C# есть некоторые замечания. Но согласитесь, что во всех этих языках есть сильные стороны. В C/C++ за счёт убогого синтаксиса достигается невиданная производительность, а C# имеет более красивый синтаксис, очень напоминающий паскалевский, что несколько замедляет код, но также позволяет серьёзно оптимизировать, но с минимальными извращениями. В Питоне есть несколько очень гибких конструкций, которые за счёт реализации работают очень долго, но разработчикам Паскаля удалось добавить их в свой язык и существенно ускорить. Пытаться отстоять здесь совместимость с допотопными паскалями, по моему, просто глупо. Эта возможность попросту мало кому нужна, а кому это всё же надо, сможет подогнать свой код по абц, без этого по-любому не обойдётся.