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

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]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 (ссылка)
Одна жаба генерит другую, которая работает сама без первой.

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


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