OSDev

для всех
Текущее время: 28 мар 2024, 14:20

Часовой пояс: UTC + 3 часа




Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 28 дек 2014, 19:38 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
Вы видели программу Hello World на ассемблере ?

Видел и писал. И не только хелловорды, но и программы по тематике сего форума. В сто, нет - в тысячу раз читабельней и понятней. И не надо заявлять про "подсветку синтаксиса и автодополнение" - нормальные asm-IDE такое тоже умеют. А результирующий код на этом inline-ассемблере в жаве абсолютно нечитаем. Больше похоже на кривой PoC, чем на нечто реально применимое.
Цитата:
Сборка мусора и кросплатформенность есть две совершенно разные вещи. По первой замечу - как работала, так и будет продолжать отлично работать (ну если откровенную лажу в программе не писать, конечно). А по кроссплатформенности по ссылке указано, что если предполагается работа на не поддерживаемых платформах, то библиотека генерирует врапер, который на неподдерживаемой платформе просто вызывает Java-вариант вместо низкоуровневого.

Именно, что если несколько накосячить, вся сборка летит к чертям. И в целом, работать с JNI очень неудобно, т.к. это костыль, призванный покрыть тормознутость жавы путем написания кода на других языках. А на счет кроссплатформенности - придется писать 2 варианта кода. И я сильно сомневаюсь, что есть Java-программисты, действительно готовые на одну конкретную платформу переписывать функции целиком на костыльном ассемблере, при том, что копию на java все равно придется иметь и поддерживать.
Цитата:
Вы вроде пишете, что про сравнение производительности читали, но тут же заявляете, что в пользе ассемблера сильно сомневаетесь. Может стоит ещё немного подумать ?

У меня складывается впечатление, что вы разучились читать. Я "заявил", что при использовании постоянных обращений через функции JNI польза от ассемблера резко снижается, потому что ассемблерный код будет прерываться на относительно долгоиграющие функции JNI для доступа к полям классов и элементам массива. Или же придется копировать массивы и структуры заранее в неконтролируемую память, что, в свою очередь, полностью убивает сборку мусора, о чем написано выше, а вдобавок удваивает расход памяти. Это значит, что если уж писать на ассемблере, то писать на чистом, избегая работы с JNI, тем самым еще больше повышая скорость.
Цитата:
Вы, конечно же готовы предоставить результаты тестирования С-компиляторов на предмет опровержения бреда сивой кобылы ? Или просто треплетесь без минимального обоснования фактами ?

Зачем мне тестировать компиляторы? Я заявил, что они активно используют SSE, если их правильно использовать с правильными параметрами. Нужны доказательства - поройтесь в настройках, скомпилируйте пару программ с double'ами с полной оптимизацией и использованием SSE, дизассемблируйте и почитайте. Я в свое время начитался кода, генерируемого компиляторами, и SSE встречаю довольно часто (и нет, это не асм-вставки, а встроенные возможности). Заявление же, что "компилятор Си вряд ли генерирует код эффективней тупой реализации на GPR", опять же, запросто опровергается чтением этого кода, а следовательно, и есть бред сивой кобылы. А вот автор статьи как раз и занимается, как вы выражаетесь, трёпом без минимального обоснования фактами.
А вы, опять, даже не удосужились вчитаться в то, что я написал.
Цитата:
а вот доказать что-то - мало способных.

А давайте наоборот? Вы возьмете Java и сделаете быструю рабочую программу, доказав всем, как она божественна и восхитительна. Zealint вам это и предложил. Чем эта идея хуже вашей? Не хотите тратить время? И я тоже не хочу. Так что не надо тут изображать пророка-великомученника.

Java-полезный язык. Зная одну Java можно писать программы на разные системы. И без нее, возможно, не было бы такого резкого развития всяких гаджетов. Но вся эта виртуалка дается путем сильного снижения скорости. Доказательства? Почти все сложные игры для телефонов тянут с собой неслабого размера библиотеки нативного кода. Как по-вашему, зачем? Думаете, что все крупные разработчики мира оказались идиотами, готовыми удваивать штат своих сотрудников просто потому, что им не нравится java? Что-то я сомневаюсь.
Никто не против того, чтобы java использовалась в тех сферах, для которых она создавалась. В первую очередь это всякие юзер-френдли приложения и кроссплатформенные решения. Но не надо думать, что ваши знания в одной единственной области способны покрыть все сферы. Это есть обыкновенное невежество. И пытаться писать высокопроизводительные вещи на жаве - это как забивать гвозди ботинками.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 13:10 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Zealint писал(а):
Эмбрион, то, о чём я говорю, это не наука, это минимальный набор знаний, который должен быть у школьника, поступающего в вуз на специальность, связанную с информатикой

То, что я показал, вполне возможно даже в уже существующем виде пройдёт порог в вашем тесте. И даже если не пройдёт с отставанием на несколько секунд, то в имеющейся простейшей реализации есть куча мест для дополнительной оптимизации. И вы это знаете. Ну да высота замка не даёт вам возможности обращать внимание на такие мелочи. Поэтому - ставьте свою галочку "незачёт" и забудьте о Java, объективный вы наш.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 13:31 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Bargest писал(а):
Именно, что если несколько накосячить, вся сборка летит к чертям.

А что, в С выход за границы массива или кривой указатель совершенно безопасны ?
Bargest писал(а):
И в целом, работать с JNI очень неудобно, т.к. это костыль, призванный покрыть тормознутость жавы путем написания кода на других языках.

В подавляющем большинстве случаев с JNI работать нет необходимости. Но когда нужна серьёзная оптимизация, то уж хоть с JNI, хоть с ассемблером работать - гемороя всегда будет больше чем в чистой Java. Хотя просто написать стандартный вызов JNI функции занимает лишь одну строчку в тексте, так что я не знаю, чем уж вам так сильно не угодил JNI.
Bargest писал(а):
И я сильно сомневаюсь, что есть Java-программисты, действительно готовые на одну конкретную платформу переписывать функции целиком на костыльном ассемблере, при том, что копию на java все равно придется иметь и поддерживать.

Вы живёте в мире, где вам позволяют считать себя важным. Но в мире enterprise development, особенно в отношении начинающих кодеров, особых сантиментов ни кто не испытывает, сказали надо написать, значит будут кодеры кодить.

И даже без учёта реальной ситуации в разработке, ваш подход по сути выражается - если мне лень, то ни какой совместимости у вас не будет. Но ведь не всем на свете всё лень. Есть люди, которые готовы ради достижения цели потратить лишний часик-другой на написание ещё и Java варианта в дополнение к ассемблерному.
Bargest писал(а):
Я "заявил", что при использовании постоянных обращений через функции JNI польза от ассемблера резко снижается, потому что ассемблерный код будет прерываться на относительно долгоиграющие функции JNI для доступа к полям классов и элементам массива.

Для того, что бы не тратить время на "постоянные обращения", давно придуман способ - надо просто данные правильно организовать. То есть немного подумав вы и сами вполне сможете переделать структуру данных так, что бы минимизировать "постоянные обращения".
Bargest писал(а):
Зачем мне тестировать компиляторы? Я заявил, что они активно используют SSE, если их правильно использовать с правильными параметрами. Нужны доказательства - поройтесь в настройках, скомпилируйте пару программ

Ну да, как и ожидалось - доказательств нет и не будет. Хотя вам самому бы стало яснее, что реально ваш С может, а чего нет.
Bargest писал(а):
Zealint вам это и предложил. Чем эта идея хуже вашей? Не хотите тратить время? И я тоже не хочу. Так что не надо тут изображать пророка-великомученника.

Ну почему, я потратил время, мой вариант пройдёт его тест. А вот вы только письма пишете, ни каких тестов ваши варианты не проходят.
Bargest писал(а):
Никто не против того, чтобы java использовалась в тех сферах, для которых она создавалась. В первую очередь это всякие юзер-френдли приложения и кроссплатформенные решения. Но не надо думать, что ваши знания в одной единственной области способны покрыть все сферы. Это есть обыкновенное невежество. И пытаться писать высокопроизводительные вещи на жаве - это как забивать гвозди ботинками.

Ну как бы раньше вообще Java не было. И встречались мнения, что мол ну зачем какие-то новые языки городить, давно всё создано, берём фортран для математики, ассемблер для низкого уровня, ну и вот С для всяких глупостей ещё придумали. Но со временем ситуация резко изменилась. Задумайтесь, почему бы это произошло.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 14:06 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
А что, в С выход за границы массива или кривой указатель совершенно безопасны ?

Я сказал выше, что при использовании ассемблера безопасность Java исчезает. С этой т.з. java становится небезопасной, и ее смысл как безопасного языка исчезает.

Цитата:
В подавляющем большинстве случаев с JNI работать нет необходимости. Но когда нужна серьёзная оптимизация, то уж хоть с JNI, хоть с ассемблером работать - гемороя всегда будет больше чем в чистой Java. Хотя просто написать стандартный вызов JNI функции занимает лишь одну строчку в тексте, так что я не знаю, чем уж вам так сильно не угодил JNI.

Чем мне не угодил - тем, что вместо arr[i] или mov eax, [ebx + ecx * 4] будет записан вызов функции, которая внутри проверит тип объекта, рассчитает смещение элемента и вернет значение. Может еще какие проверки выполнит, вроде выхода за границу массива. Это во много раз медленней одной команды assemler'а, не так ли?
Цитата:
Вы живёте в мире, где вам позволяют считать себя важным. Но в мире enterprise development, особенно в отношении начинающих кодеров, особых сантиментов ни кто не испытывает, сказали надо написать, значит будут кодеры кодить.

И даже без учёта реальной ситуации в разработке, ваш подход по сути выражается - если мне лень, то ни какой совместимости у вас не будет. Но ведь не всем на свете всё лень. Есть люди, которые готовы ради достижения цели потратить лишний часик-другой на написание ещё и Java варианта в дополнение к ассемблерному.

Все бы вам кого-нибудь поунижать. А все куда проще - я не видел ни одной программы с этим Java-ассемблером, а java-программы мне сыпятся часто и совершенно разные. Вывод: в реальности этот "ассемблер" используют мало, если из тысяч файлов мне и моим знакомым не попадался этот ассемблер. Уверен, 99% программистов java вообще не знают о его существовании.
А поддерживать два варианта кода ради кроссплатформенности - ничем не лучше, чем написать два варианта кода на asm/C++.
Цитата:
Для того, что бы не тратить время на "постоянные обращения", давно придуман способ - надо просто данные правильно организовать. То есть немного подумав вы и сами вполне сможете переделать структуру данных так, что бы минимизировать "постоянные обращения".

Как я и сказал выше. Есть массив. Надо читать разные его элементы. Как? Вариант первый - каждый раз вызывать JNI для доступа к элементам. Вариант второй - скопировать массив в неконтролируемую память, после чего обращаться напрямую, но удвоить тем самым расход. Грязные хаки с прямым обращением внутри управляемой памяти не рассматриваю, т.к. они имеют свойство отваливаться при выходе новых версий виртуалки.
Цитата:
Ну да, как и ожидалось - доказательств нет и не будет. Хотя вам самому бы стало яснее, что реально ваш С может, а чего нет.

Mr. Trololo? Я вам сказал, как получить доказательства. Это не трудно. Я эти доказательства уже получал, если и вы хотите - вперёд, я сказал, как это сделать. Не вижу смысла повторять свои действия для тех, кто в упор не желает видеть, что существуют вещи кроме джавы. Очевидно, доказательства вам и не нужны, даже если вам показать сотню графиков сравнения скоростей, где java будет в 2 раза медленней, вы все равно заявите что-то вроде "Ложь и провокация! Java не может тормозить!".
"Хотя вам самому бы стало яснее, что реально ваша Java может, а чего нет."
Цитата:
Ну почему, я потратил время, мой вариант пройдёт его тест. А вот вы только письма пишете, ни каких тестов ваши варианты не проходят.

А почему же до сих пор не прошел? (И просили 3 теста, если что).
Мои варианты не проходят тестов. Я и не говорю, что я супер-гений с супер-языком, решающим все задачи. Я почитал код Zealint'а, который он выкладывал (на C + Asm), убедился, что этот человек понимает, о чем говорит. Сам я системщик и реверсер, но по имеющемуся у меня опыту могу с уверенностью сказать, что java медленней. Какие вы хотите от меня тесты пройти? Тест на то, что Java медленная? Да запросто, сейчас сделаю перемножение матриц тройным циклом и залью.:) А если тест на то, что C/Asm быстры - этот тест уже пройден и исходники доступны.
Цитата:
Ну как бы раньше вообще Java не было. И встречались мнения, что мол ну зачем какие-то новые языки городить, давно всё создано, берём фортран для математики, ассемблер для низкого уровня, ну и вот С для всяких глупостей ещё придумали. Но со временем ситуация резко изменилась. Задумайтесь, почему бы это произошло.

Ну да, все идиоты, а я Д'Артаньян. Я Мессия, несу свет, но меня эти глупцы не понимают.
Поясняю, что произошло и почему. Появилась Java. Потому что писать программы на неуправляемых языках относительно сложно. А для Java достаточно нанять китайцев и индусов (не образно, а реальных китайцев и индусов), которые за гроши напишут любой код. Да, он не будет отличаться быстродействием и логичностью. Да, программы будут весить мегабайты. Но это не важно: когда программа собирается как конструктор (а китайцы пишут на Java именно так), процесс разработки удешевляется в десятки раз. Это попросту выгодно, а что выгодно, то и становится бизнес-мейнстримом.
А теперь вам на "задуматься". Почему те же Intel и MS до сих пор делают свои компиляторы C++? Если другие языки действительно не нужны, думаете, всё бизнес-сообщество бы этого не поняло? А если это поняли только вы, то, может быть, вы просто ошибаетесь в силу непонимания множества сфер применения компьютерной техники?
Хотя конечно, я уже совершенно не сомневаюсь, что ваш ответ на это будет как обычно в стиле "просто все идиоты, а я самый умный", или "вам только кажется, что Си поддерживают, а на деле вот уже завтра его бросят".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 14:18 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Zealint писал(а):
Тов. эмбрион, Вы всё ещё не понимаете в чём смысл данной темы. Я сказал, что ни один жава программист не решит на жаве задачи, которые я считаю простыми. Совершенно не интересует сравнение компиляторов жавы с другими языками, и так ясно, то она проигрывает без всяких сравнений. Интересует сравнение полного комплекса: программист + язык. Не важно, какой программист и не важно какой язык в отдельности друг от друга. Но важно, что по моим наблюдениям любители (ярые приверженцы) жавы совершенно не способны решать простые задачи (и сложные тем более), потому что есть чёткая корреляция между способностями решать задачи и способностями мыслить. Неспособность мыслить широко выражается разными способами: от яростной любви к жаве, до неумения решать простые задачи. Вот именно это никто до сих пор мне не опроверг в моей практике.

А меня лично совсем не интересует умение товарища Эмбриона решать математические задачи, и считаю что это уход от темы (надеюсь не намеренный). Могу вас уверить, что ваши задачи поставленные для любых Си-программистов с таким же успехом не будут решены. Задачи, которые выполнены на сайте, решены не Си-программистами, а такими же как вы теоретиками, при этом являющихся фанатами Си. И из этого вы сделали ошибочные выводы об особых умениях Си-программистов "вообще".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 14:55 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Bargest писал(а):
Цитата:
А что, в С выход за границы массива или кривой указатель совершенно безопасны ?

Я сказал выше, что при использовании ассемблера безопасность Java исчезает. С этой т.з. java становится небезопасной, и ее смысл как безопасного языка исчезает.

Всё-равно относительно-безопасный, по сравнению с Си. В общем-то, нормальной практикой является наличие рабочего прототипа на языке более высокого уровня, а продукт на языке более низкого уровня. И опять же, обсуждается не безопасность и переносимость языка, а скорость.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 15:45 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
Himik писал(а):
А меня лично совсем не интересует умение товарища Эмбриона решать математические задачи, и считаю что это уход от темы (надеюсь не намеренный). Могу вас уверить, что ваши задачи поставленные для любых Си-программистов с таким же успехом не будут решены. Задачи, которые выполнены на сайте, решены не Си-программистами, а такими же как вы теоретиками, при этом являющихся фанатами Си. И из этого вы сделали ошибочные выводы об особых умениях Си-программистов "вообще".

Си-программирование как таковое меня тоже не интересует. Меня интересует умение человеком решать задачи с помощью какого-либо инструмента (любого). Так вот, я утверждал и буду продолжать утверждать, что нет естественной (т. е. добровольной, созданной в здравом уме) связки "человек+жава", с помощью которой можно успешно решать простые в моём понимании задачи. Собственно, если это так, то доступ в HPC жаве вообще закрыт в принципе. Теоретически, можно посадить, например, меня на жаву, и я, возможно, 3 задачи всё-таки решу, но прикол в том, что заставить меня это сделать может только чрезвычайно безвыходная ситуация. То есть я хочу сказать, что можно (в теории) любой суп вилкой кушать или ножом, но смысла не вижу. Никаких выводов о Си-программистах я никогда не делал. Там рекорд по задаче о перемножении матриц был поставлен на одном из вариантов Pascal+ams (автор, правда, послал только бинарный код).

эмбрион писал(а):
То, что я показал, вполне возможно даже в уже существующем виде пройдёт порог в вашем тесте.

Нет, не пройдёт. Если хотите переубедить - сделайте это не словами, а делами.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 15:51 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Bargest писал(а):
Я сказал выше, что при использовании ассемблера безопасность Java исчезает. С этой т.з. java становится небезопасной, и ее смысл как безопасного языка исчезает.

Ну давайте посмотрим повнимательнее на ваш довод. Почему Java считается безопасной ? Да просто потому, что её создатели (а они её создали на С, а не на Java) задались целью сделать безопасную среду разработки. И задавшись целью, они приложили для этого кучу усилий для проверки всяческих выходов за границы массивов и null-пойнтеров. То есть суть безопасности состоит в приложении достаточного количества усилий к предмету.

Вот так же и с ассемблерными вставками. Если есть желание сделать их безопасными, то ни кто не мешает проверять аргументы на входе, прогонять кучу тестов для внутренних алгоритмов, ну и всё такое. И по приведённой ссылке тестовый класс для перемножения массивов как раз аргументы на валидность проверяет, так что безопасность там весьма неплохая.
Bargest писал(а):
Чем мне не угодил - тем, что вместо arr[i] или mov eax, [ebx + ecx * 4] будет записан вызов функции, которая внутри проверит тип объекта, рассчитает смещение элемента и вернет значение.

Здесь вы просто не знакомы с JNI. Это не осуждение, ведь и я когда-то JNI не знал. Но тем не менее - при создании JNI специально подумали, что нафиг нужна эта JNI, если с ней всё будет тормозить. Поэтому массивы примитивных типов там выставляются именно как последовательность байт в памяти. Обращайтесь к ним напрямую по смещению - mov eax, [ebx + ecx * 4]. И всё будет отлично работать. Собственно так и оргаизовано обращение к массивам в тестах для сравнения производительности.
Bargest писал(а):
Все бы вам кого-нибудь поунижать.

Я не ставлю перед собой подобных целей. К сожалению, я встречал коллег по работе, которые весьма высоко себя ценят и крайне неохотно выполняют свои прямые обязанности. Это, конечно же, следствие весьма криво устроенного мира, в котором мы живём (виноваты и начальство и вообще весь бардак в стране), но тем не менее наблюдать со стороны было неприятно.
Bargest писал(а):
А все куда проще - я не видел ни одной программы с этим Java-ассемблером, а java-программы мне сыпятся часто и совершенно разные.

Подскажу - этой программе всего несколько дней от роду. Поэтому я бы сильно удивился, если бы вы увидели её среди сыплящихся на вас программ.
Bargest писал(а):
Да запросто, сейчас сделаю перемножение матриц тройным циклом и залью.:)

Вот это другой разговор ! Вот вам за это пирожок :) Ну то есть во вложении тот класс, на котором производилось сравнение скорости чистой Java и Java с ассемблерными вставками. Для переделки его в С вариант не потребуется более 10 минут (надеюсь).
Bargest писал(а):
Поясняю, что произошло и почему. Появилась Java. Потому что писать программы на неуправляемых языках относительно сложно. А для Java достаточно нанять китайцев и индусов (не образно, а реальных китайцев и индусов), которые за гроши напишут любой код. Да, он не будет отличаться быстродействием и логичностью. Да, программы будут весить мегабайты. Но это не важно: когда программа собирается как конструктор (а китайцы пишут на Java именно так), процесс разработки удешевляется в десятки раз. Это попросту выгодно, а что выгодно, то и становится бизнес-мейнстримом.

Это правильно, но не совсем по теме. Речь ведь зашла о выходе Java за те пределы, которые вы ей назначили. Вот я и написал вам, что С когда-то тоже взял да вышел за пределы, в области царств фортрана и ассемблера. Так же (и по тем же причинам) может (и должно) случиться и с Java.
Bargest писал(а):
Хотя конечно, я уже совершенно не сомневаюсь, что ваш ответ на это будет как обычно в стиле "просто все идиоты, а я самый умный", или "вам только кажется, что Си поддерживают, а на деле вот уже завтра его бросят".

Ну что бы не разочаровать вас, я действительно могу напомнить о реально сужающейся нише С-программирования :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 15:53 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Чего-то не работает цепляние файлов. Поэтому вставлю его текст прямо сюда:
Код:
public class MatrixTest
{
   public static enum CalculationProviders { Java, SSE2, GPRRegisters }
   
   public static void test(int n, int a1, int p1, int r1, int m1, int a2, int p2, int r2, int m2, CalculationProviders cp)
   {
      Runtime r=Runtime.getRuntime();
      DecimalFormat df=new DecimalFormat("###,###,###,###");
      System.out.println(df.format(r.maxMemory()-r.totalMemory()+r.freeMemory()));
      System.out.println("test("+n+", "+a1+", "+p1+", "+r1+", "+m1+", "+a2+", "+p2+", "+r2+", "+m2+");");
      int as[][]=new int[n][n];
      int bs[][]=new int[n][n];
      long sums[][]=new long[n][n];
      long xors[]=new long[n];

      m1=0xffffffff>>>(32-m1);
      m2=0xffffffff>>>(32-m2);

      long t=System.currentTimeMillis();
      
      int prev1=a1,prev2=a2;
      as[0][0]=prev1;
      bs[0][0]=prev2;
      for (int y=0;y<n;y++)
      {
         int x0=0;
         if (y==0) x0=1;
         for (int x=x0;x<n;x++)
         {
            as[x][y]=prev1=(prev1*p1+r1)&m1;
            bs[y][x]=prev2=(prev2*p2+r2)&m2;
         }
      }
      System.out.println(df.format(r.maxMemory()-r.totalMemory()+r.freeMemory()));
      System.out.println("input="+(System.currentTimeMillis()-t));
      
      if (cp==CalculationProviders.Java) calculate(n, as, bs, sums);
      else calculate(n, as, bs, sums, cp);
      
      t=System.currentTimeMillis();
      
      for (int y=0;y<n;y++)
      {
         long xor=0;
         for (int x=0;x<n;x++)
            xor=xor^sums[y][x];
         xors[y]=xor;
      }
      
      System.out.println("output="+(System.currentTimeMillis()-t));
      t=System.currentTimeMillis();

      long xor=0;
      for (int i=0;i<n;i++)
         xor=xor^xors[i];

      System.out.println(xor);
   }

   private static void calculate(int n, int[][] as1, int[][] as2, long[][] sums, CalculationProviders cp)
   {
      long t;
      t=System.currentTimeMillis();
   
      if (cp==CalculationProviders.GPRRegisters)
         for (int y=0;y<n;y++)
            for (int x=0;x<n;x++)
               sums[y][x]=ArrayMultiplicationGPRsOnly.multiply(as1[y],as2[x]);
      else
         for (int y=0;y<n;y++)
            for (int x=0;x<n;x++)
               sums[y][x]=ArrayMultiplicationSSE2.multiply(as1[y],as2[x]);

      System.out.println("calculation="+(System.currentTimeMillis()-t));
   }

   private static void calculate(int n, int[][] as1, int[][] as2, long[][] sums)
   {
      long t;
      t=System.currentTimeMillis();
   
      for (int y=0;y<n;y++)
         for (int x=0;x<n;x++)
         {
            long sum=0;
            int a11[]=as1[y], a22[]=as2[x];
            for (int i=n-1;i>=0;i--)
            {
//               sum=sum+a11[i]*a22[i];
               sum=sum+(a11[i]+0l)*a22[i];
            }
            sums[y][x]=sum;
         }

      System.out.println("calculation="+(System.currentTimeMillis()-t));
   }
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 дек 2014, 15:55 

Зарегистрирован: 15 апр 2014, 14:13
Сообщения: 127
Himik писал(а):
И из этого вы сделали ошибочные выводы об особых умениях Си-программистов "вообще".

Ну прям бальзам и всё такое :)

Рад видеть попытку объективного взгляда на вещи.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB