fbfd = open("/dev/fb0", O_RDWR);
char *fbp = (char *)mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fbfd, 0);
printf("start memset test...\n");
gettimeofday (& before, NULL);
int i; for(i = 10; i > 0; i--){
memset(fbp, 0xff, screensize);
memset(fbp, 0x00, screensize);
}
gettimeofday (& after, NULL); t = after.tv_sec - before.tv_sec + (double)(after.tv_usec -before.tv_usec)/1000000;
printf("memset 20 test: %f\n\n", t);
printf("\n\nstart write test...\n");
char * buff = alloca(screensize);
memset(buff, 0xaa, screensize);
char * buff2 = alloca(screensize);
memset(buff2, 0xf0, screensize);
gettimeofday (& before, NULL);
for(i = 10; i > 0; i--){
close(fbfd);
fbfd = open("/dev/fb0", O_RDWR);
write(fbfd, buff, screensize);
close(fbfd);
fbfd = open("/dev/fb0", O_RDWR);
write(fbfd, buff2, screensize);
}
gettimeofday (& after, NULL);
t = after.tv_sec - before.tv_sec + (double)(after.tv_usec - before.tv_usec)/1000000;
printf("close open write 20 test: %f\n\n", t);
##############################
И вот что на выходе:
start memset test... memset 20 test: 2.163977
start write test... close open write 20 test: 0.754604
Что-то уж очень медленно. Почему второй вариант быстрее первого? Может кто знает что можно почитать про framebuffer для embedded линуксов, а ещё лучше про линуксы на arm-ах?
Заранее спасибо.
Ответ на:
комментарий
от imhotep
Ответ на:
комментарий
от nibbler
Ответ на:
комментарий
от nibbler
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Фреймбуфер возвращает неправильное разрешение экрана (2016)
- Форум non-blocking write (2011)
- Форум Чтение многомерного массива из отраженого файла (2011)
- Форум Проблема с dup2 (2006)
- Форум Утилита для изменения аптайма (2008)
- Форум C чтение и запись в /dev/ttyUSB0 (2011)
- Форум Помогите с прогой на Си под СанОС (2001)
- Форум сваливается send (сокет) (2008)
- Форум проблема с чтением из FIFO (2024)
- Форум IPC не компилируется (2006)