Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2008-04-29 14:22:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Entry tags:Компутерщина

Тут наткнулся на очередного энтузиаста С++ с незамутненным вполне сознанием. Ну интереса ради написал три тестика - точнее один - на трех языках:

создание и сортировка (причина выбора теста была в упоминании std::sort в контексте Ну не нужно и все. И списки сортировать без библиотечных функций не нужно) массива из 2 млн строк, представляющих собой числа от 0 до 2_000_000 в дес.записи:

C++:

void test () {
   vector v (2000000);
   char buf [20];
   for (int i = 0; i != v.size (); ++ i)
   {
     sprintf (buf, "%d", i);
     v [i] = string (buf);
   }
   sort (v.begin (), v.end (), less_equal ());
//   for (int i = 0; i != v.size (); ++ i)
//      cout << v [i] << "\n";
}


O'Caml:
let (+>) x f = f x
let s = Array.init 2_000_000 string_of_int      
let _ = Array.fast_sort compare s      
(*let _ = s +> Array.to_list +> String.concat ", " +> Printf.printf "[%s]\n"*)      


Java:
	public static void main(String[] args) {
		final String [] v = new String [2000000];
		for (int i = 0; i < v.length; i++) v[i] = Integer.toString(i);
		Arrays.sort(v);
//		for (String aV : v) System.out.println("s = " + aV);
	}


Результаты оказались ожидаемыми - С++ с O'Caml одинаковы по скорости, программа на O'Caml потребила 36MB памяти против 54MB на С++, Жаба порвала С++ как бобик тряпку - инициализация - массива раза в полтора быстрее, сортировка - раза в 3.

Смотреть код и память у Жабы - занятие то, еще на код O'Caml и C++ я посмотрел:
O'Caml - 84 вполне естественных строчки на асме, С++ - 2895 строчек (без отладочной информации).

Ну собственно - вполне типовой пример того, что получается если "просто писать на С++, как на нормальном языке" - хреново получается. Аффтар исходного поста в конце треда уже что-то несет про то, что вот да с доступом к векторным инструкциям он любой O'Caml уделает.

Может и уделает (хотя я не очень понимаю, как сортировку оптимизировать "векторными инструкциями") - только вот даже 10,000 строк кода затрахаешься "векторными инструкциями" оптимизировать. Ну о портабельности я уж и не говорю. Хотя боюсь, что и с эффективностью будут траблы - потому что умственные усилия, которые можно на усовершенствование алгоритмики потратить, пойдут на "векторные инструкции".


Какая из этого мораль - да очень простая - полезно иногда немного по сторонам смотреть, ну и еще одна - если Вы совершенно точно не знаете, почему вам не подходит Жаба - не лезьте в С++ - просто потратите кучу времени совершенно зря.


(Читать комментарии) - (Добавить комментарий)


[info]ppkk
2008-04-30 23:06 (ссылка)
Вряд ли в моём мобильнике отдельные процессоры и для видео (кодек по крайней мере один), и для звука (кодеки всякие разные), и для фотографий, и для GSM-дел.

А что за модель с Дюком Нюкемом?

У меня телефон Самсунг SGH-E480.

Что мне скачать, чтобы поверить, что Ява — не просто отбрасыватель назад с, условно, 486-ого процессора персоналки на ZX Spectrum?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-04-30 23:46 (ссылка)
У меня мобилы нет. Протроха omap3430 от Техасских Инструментов, кажется. Ускоритель то ли от НВидии, то ли от тех же Инструментов. Виртуальная машина своя, т.е. сановская CLDC HI. Дема графики без управления есть в составе JBenchmark 2.0.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2008-04-30 23:49 (ссылка)
Попробуем JBenchmark 2.0, если пойдёт. У меня для такого экранчика быстродействие Дюка ассоциируется скорее с персоналками на 386SX.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-05-01 00:32 (ссылка)
Можно запустить чисто вычислительный тест, например, EEMBC и сравнить. У многих мобил 16-битовая шина памяти, в которую вульгарно упирается выборка 32-битовых процессорных инструкций. Жаба на таких мобилах страшно сосет.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2008-05-02 00:53 (ссылка)
http://www.club-java.com/TastePhone/J2ME/MIDP_Java_telephone.jsp?m=865&brand=Samsung&model=SGH-E480

Я так понял, что Ява-таки его делает Спектрумом-2 Мегабласт, но всё-таки по сути Спектрумом. Или как?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-05-02 03:09 (ссылка)
As fast as a PIII (without Java compiler) at 857.9MHz.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2008-05-02 20:21 (ссылка)
(эмоциональный черновик, ниже вопрос по существу)
Я ссылку дал не для того, чтобы мне ткнули в эту странную строку, а чтобы получить представление о быстродействии от человека, который может сравнивать процессоры друг с другом, а не с мифическим PIII. Там полно скоростей и объёмов памятей и т.п.

Это бредовая строка. Мало того, что я вообще её не понимаю, так ещё у них процессор XScale PXA-263 на 400 МГц является "as fast as PIII (without Java compiler) at 4,664.7MHz". Или по-другому: где мой Дюк Нюкем? PIII 857.9 МГц без графических и прочих ускорителей обсчитывает Дюка Нюкема на много бОльший по площади экранчик, чем у меня. Если там проблемы с памятью и т.п., то не надо сравнивать с несравнимым (при том, что на скромный экранчик 128*160 текстуры много не займут).

JBenchMark2.0 на мой телефон — примерно … (Трахаюсь с тем, чтобы закачать Яву на телефон: интернет принципиально отключен, через кабель какие-то пляски нужны, можно ли через карту памяти MicroSD — такое ощущение, что нельзя; это всё геморрой от Самсунга, а не от Корпорации, естественно, хотя они в отличие от Моторол-Нокий и разной серой Шушеры из "Евросети" хотя бы в комплект включают кабели и т.п.)

Вопрос.
А как я могу запустить тест и вообще J2ME на персоналке под Окнами? Или не под Окнами (у меня Линукс какой-то установлен тоже)? Вообще как-нибудь?

У меня стоит Pentium-III 600 МГц, интересно узнать, что про него скажут хотя бы тесты JBenchmark.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-05-02 22:11 (ссылка)
Вы говорите, что жаба превращает вашу мобилу в Спектрум, там сообщают, что в третий пень указанной частоты.

Чистую мобильную жабу без блевотек запустить просто. Могу прислать бинарник под винд.чество или линух или можно построить из открытых сырцов с помощью визуального Ц для виндючества / гцц для линуха. Графики и прочего в чистой жабе, конечно, нет. Для всего этого нужен программный эмулятор устройства.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2008-05-02 22:31 (ссылка)
Вы говорите, что жаба превращает вашу мобилу в Спектрум, там сообщают, что в третий пень указанной частоты.
Я хочу увидеть свидетельство скорости как у PIII. То, что не Sun, а криворукие программисты превращают в Спектрум мой телефон — вполне себе вариант. Но в целом я не верю, что XScale 400 МГц — аналог почти 5 ГГц PIII.
Они судят по тестам, я сужу по имеющимся приложениям, этим они убедительнее намного. Но сравнение с PIII — какой-то странный выпендрёж: повторюсь, что PIII на 800 МГц без всяких ускорителей Дюка Нюкем обсчитывает на весь экран, вовсе не на 128*160. Где мне скачать Дюка?

Чистую мобильную жабу без блевотек запустить просто. Могу прислать бинарник под винд.чество или линух или можно построить из открытых сырцов с помощью визуального Ц для виндючества / гцц для линуха. Графики и прочего в чистой жабе, конечно, нет. Для всего этого нужен программный эмулятор устройства.
Мне хотелось бы на домашнем PIII запустить JBenchmark, например. Так что, конечно, без графики может и не подойти. Если он "станет" PIII бОльшей частоты, то моя мама (которой я всё не соберусь отвести компьютер) будет рада работать под несколькими вложенными Явами (есть ли виртуальная машина Явы, написанная на Яве? наверняка есть же, или как?). Если нет, то я съем свою шляпу буду очень благодарен за помощь в разрешении моих заблуждений.
Если "собрать" — запустить сборку, а не долго править makefile, докачивать и править какие-то библиотеки (я не думаю, что с Явой так, просто подобные действия меня обычно расстраивают), я и сам смогу, то есть достаточно ссылки (я до сих пор не ориентируюсь на сайтах Сана). Svn/cvs или что-нибудь столь же простое для пользователя использовать смогу, конечно. У меня, кстати, под бесплатным МСВЦе установлен сейчас компилятор от Интел, что должно положительно повлиять на возможное быстродействие.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-05-02 23:17 (ссылка)
Графическая часть дюка - в JBenchmark2.0.

Если вы хотите сравнить именно процессор, запустите чисто вычислительный тест без графики. Тогда и эмулятора не понадобится.

Мне проще всего прислать бинарник под вынь или линух. Ссылку на сырцы могу прислать тоже. Там нужен svn и для вындючества, кажется, что-то из цыгвина.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2008-05-02 23:22 (ссылка)
Посылайте, пожалуйста.

Какой объём (архив мегабайт в 20 почта осилит, наверное)? Почта моя сохранилась, или послать письмецо?

что-то из цыгвина
Это может вылиться во что угодно:] Как раз в похожей ситуации мне как-то приходилось искать старые версии библиотек, ибо с новыми совместимости не было; но вряд ли это тот случай.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-05-02 23:45 (ссылка)
Меньше метра - она ж мобильная. Почту проще еще раз.

(Ответить) (Уровень выше)


[info]qwerty
2008-05-02 23:19 (ссылка)
Жаба на жабе - это обычно жаба путем раскрутки, а не интерпретация интерпретатора.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ppkk
2008-05-02 23:24 (ссылка)
?

Was ist "Raskrutka"?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]qwerty
2008-05-02 23:42 (ссылка)
Одна жаба генерит другую, которая работает сама без первой.

(Ответить) (Уровень выше)


(Читать комментарии) -