Быстродействие памяти (оптимизация функций memset/memcpy)

КПК с Linux, установка Linux на iPaq и другие модели, программы
Закрыто
Siarhei Siamashka
Студент (1 lvl)
Сообщения: 47
Зарегистрирован: Чт мар 16, 2006 14:45

Быстродействие памяти (оптимизация функций memset/memcpy)

Сообщение Siarhei Siamashka » Пт мар 17, 2006 12:04

Зравствуйте, не мог бы кто-нибудь откомпилировать и запустить тестовую программку на Zaurus?

http://maemo.org/pipermail/maemo-develo ... 03269.html

На Nokia 770 данные оптимизированные функции заполнения/копирования памяти (memset8, memcpyt16) работают заметно быстрее стандартных memset/memcpy:

Код: Выделить всё

Results from my Nokia 770 (TI OMAP1710 250MHz) are the following:
    --- running correctness tests ---
    all the correctness tests passed
    --- running performance tests (memory bandwidth benchmark) ---:
    memset() memory bandwidth: 121.22MB/s
    memset8() memory bandwidth: 275.94MB/s
    memcpy() memory bandwidth (perfectly aligned): 104.86MB/s
    memcpy16() memory bandwidth (perfectly aligned): 113.98MB/s
    memcpy() memory bandwidth (16-bit aligned): 70.37MB/s
    memcpy16() memory bandwidth (16-bit aligned): 101.31MB/s
    --- testing performance for random blocks (size 0-15 bytes) ---
    memset time: 0.410
    memset8 time: 0.260
    --- testing performance for random blocks (size 0-511 bytes) ---
    memset time: 2.360
    memset8 time: 1.140
Было бы интересно узнать, есть ли ли какой-нибудь эффект на Zaurus. Заранее спасибо.

Аватара пользователя
Strijar
Кандидат (3 lvl)
Сообщения: 181
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Strijar » Пт мар 17, 2006 13:09

На моем:

--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 80.35MB/s
memset8() memory bandwidth: 83.55MB/s
memcpy() memory bandwidth (perfectly aligned): 45.29MB/s
memcpy16() memory bandwidth (perfectly aligned): 45.20MB/s
memcpy() memory bandwidth (16-bit aligned): 43.15MB/s
memcpy16() memory bandwidth (16-bit aligned): 38.27MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.960
memset8 time: 0.880
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 3.840
memset8 time: 3.670

Так что и без этого все более-менее хорошо ;)
Sharp Zaurus SL-C760 (pdaXrom RC9) + WiFi ASUS WL-110
Visor Platinum (PalmOS 3.5)

Siarhei Siamashka
Студент (1 lvl)
Сообщения: 47
Зарегистрирован: Чт мар 16, 2006 14:45

Сообщение Siarhei Siamashka » Пт мар 17, 2006 13:40

Спасибо. Получается, код нужно 'затачивать' под каждый процессор индивидуально. Zaurus уже существует достаточно давно, поэтому не удивительно, что там уже все заоптимизировано по максимуму. С другой стороны Nokia 770 - новый девайс и софт для него еще нуждается в доработке и еще есть возможности выжать из него лучшее быстродействие :) Nokia об этом теперь знает, наверное функции копирования памяти будут оптимизированы в одной из следующих прошивок.

Кстати, интересно, судя по всему у Nokia 770 несмотря на более слабый процессор, память заметно быстрее. Да и куда им деваться, большой экран требует хорошей скорости прокачки мультимедиа-информации.

albertr
Студент (1 lvl)
Сообщения: 27
Зарегистрирован: Пт июн 10, 2005 16:45

Сообщение albertr » Пт мар 17, 2006 16:12

Siarhei, I sent you PM.
-albertr

Siarhei Siamashka
Студент (1 lvl)
Сообщения: 47
Зарегистрирован: Чт мар 16, 2006 14:45

Сообщение Siarhei Siamashka » Пт мар 24, 2006 20:58

2Strijar: Прошу прощения, можно узнать информацию о прошивке и версии ядра? А то что-то результаты немного не сходятся:
http://maemo.org/pipermail/maemo-develo ... 03373.html
Siarhei Siamashka (ssvb on #maemo, irc.freenode.net)
currently taking part in porting MPlayer to Nokia 770/N800

sash
Доктор (4 lvl)
Сообщения: 338
Зарегистрирован: Пт июл 04, 2003 13:33

Сообщение sash » Пт мар 24, 2006 22:31

тест какойто подозрительный
вот что у меня вышло, ядра 2.4.20, glibc 2.2.5, pdaXrom 1.1.0beta2
разгона нет
компилировал gcc 3.4.6, процессор xscale

SL-C1000

# ./fastmem-arm-test
--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 238.31MB/s
memset8() memory bandwidth: 238.31MB/s
memcpy() memory bandwidth (perfectly aligned): 100.82MB/s
memcpy16() memory bandwidth (perfectly aligned): 39.35MB/s
memcpy() memory bandwidth (16-bit aligned): 92.79MB/s
memcpy16() memory bandwidth (16-bit aligned): 34.61MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.650
memset8 time: 0.560
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 1.690
memset8 time: 1.610

SL-C760

# ./fastmem-arm-test
--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 327.68MB/s
memset8() memory bandwidth: 327.68MB/s
memcpy() memory bandwidth (perfectly aligned): 110.96MB/s
memcpy16() memory bandwidth (perfectly aligned): 47.66MB/s
memcpy() memory bandwidth (16-bit aligned): 99.39MB/s
memcpy16() memory bandwidth (16-bit aligned): 42.20MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.660
memset8 time: 0.580
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 1.510
memset8 time: 1.400

Siarhei Siamashka
Студент (1 lvl)
Сообщения: 47
Зарегистрирован: Чт мар 16, 2006 14:45

Сообщение Siarhei Siamashka » Сб мар 25, 2006 10:06

sash писал(а):тест какойто подозрительный
вот что у меня вышло, ядра 2.4.20, glibc 2.2.5, pdaXrom 1.1.0beta2
разгона нет
компилировал gcc 3.4.6, процессор xscale
Да, результаты несколько странные. Получается, что SL-C760 быстрее работает с памятью, чем более новая модель SL-C1000 :shock:

Возможны варанты:
1. Ошибка в тесте
2. Оптимизация для SL-C1000 отличается от оптимизации для SL-C760 и glibc 2.2.5 оптимизирован именно для SL-C760
3. Инженеры sharp по каким-то причинам решили сэкономить на памяти в SL-C1000 и она действительно медленнее

Если не сложно, попробуй написать свою тестовую программу, тестирующую быстродействие стандартных функций memset и memcpy и сравнить результаты на SL-C760 и SL-C1000, таким образом можно подтвердить или опровергнуть предположение об ошибке в тесте.
Siarhei Siamashka (ssvb on #maemo, irc.freenode.net)
currently taking part in porting MPlayer to Nokia 770/N800

Закрыто

Вернуться в «КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее»