![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
о скорости чтения usb [D7, WinXP]
vasilii © (2007-07-10 18:20:00)у меня есть usb-устройство, которое программа, написанная на delphi7 читает 2 раза быстрее, чем программа, написанная на C(MSVC2003) и делающая всё то же самое. мне только ясно - что время теряется при вызове драйвера usb (jangle или libusb). не подскажет ли кто-нибудь - в чём здесь может быть дело.
заранее благодарен.
Rouse_ (2007-07-11 22:29:00) [1]
> а я думал такие штуки только в Китае делают...
Аладин и Актив тебе в пример - много вещей не только в прекрасном далеко "штампуют"
> А ручки-то кривЫ, однако)
С фактами не поспоришь :)
Сергей М. (2007-07-11 17:06:00) [2]
> причем точно такая же на Delphi7 стало быть выдал неверную
> информацию
А ручки-то кривЫ, однако)
Rouse_ (2007-07-11 17:02:00) [3]Ну про блоки и я думал, но автор сам сказал > причем точно такая же на Delphi7стало быть выдал неверную информацию, раз программы не идентичны...
REA (2007-07-11 16:23:00) [4]Только что вот хотел сказать про размеры блоков. Переключение направления приема/передачи в USB почему то довольно длительная обычно процедура.
StriderMan (2007-07-11 14:39:00) [5]
> девайс - usb-hub нашего изготовления
а я думал такие штуки только в Китае делают...
vasilii (2007-07-11 13:42:00) [6]ха-ха. всё ясно!
на самом деле - наш хаб поддерживает вычитывание оч.больших блоков данных за один запрос (эта возможность появилась недавно). и в тесте на Delphi данные вычитывались именно большими блоками (его писал поектировщик), а в тесте на С - малыми порциями (а там конечно на каждый запрос - и выделение памяти драйвером под контексты, (не знаю, насколько это существенно - переход в kernelmode и обратно), и главное - передача запроса устройству - вот и тормозА).
в обчем - нехватка доки. и пока не испросил проектировщика хаба...
спасибо всем за участие !!!
tesseract (2007-07-11 13:27:00) [7]
> retcode = usb_bulkread(EP_IN_BULK_HDD, SECTOR_SIZE, pChar);
т.е. память под pChar в драйвере выделяеться?
нужен профайлер что-бы выяснить где-же тормозит и кого благодарить.
> jungle(windrv)
гм, jungle или та самая обёртка Jungo для написания драйверов? Она запросто такое выкинуть может.
vasilii (2007-07-11 13:01:00) [8]дык.. здесь же нет никаких выделений памяти!
или Вы хотите сказать, что в драйвере она может выделяться, а драйвер пользуется средствами клиента? хмм.. если так - это интересно. надо как-то испытать..
tesseract (2007-07-11 12:25:00) [9]
> причем точно такая же на Delphi7 даёт скорость ровно в 2
> раза выше.
Скорее всего что-то с указателями, выделение памяти - долгая процедура.
vasilii (2007-07-11 12:16:00) [10]девайс - usb-hub нашего изготовления.
профайлером не гоняли.
да там и гонять нечего - программа-то из несколоьких строк:
//sizeof(m_cb)==6
m_cb.cmd = (USHORT) CMD_BULK_READ_START; //команда: на старт
m_cb.adr = 0;
m_cb.data = 0;
retcode = usb_bulkwrite(EP_OUT, sizeof(m_cb), &m_cb); //EP_OUT==endpoint для команд
DWORD ticks = ::GetTickCount();
for( ULONG sc=0; sc < ulSectorCount; ++sc)
{
retcode = usb_bulkread(EP_IN_BULK_HDD, SECTOR_SIZE, pChar);
if (retcode != SECTOR_SIZE)
{
//FAILED
break;
}
}
ticks = GetTickCount()-ticks;
printf("\nticks: %d SectorCount:%d\nspeed: %f Mb/sec", ticks, ulSectorCount, double(ulSectorCount*SECTOR_SIZE)/double(ticks)/1000);
причем точно такая же на Delphi7 даёт скорость ровно в 2 раза выше.
к тому же я пробовал также и _динамическую_ загрузку, т.что обьектники разработчика тут не могут, видимо, играть роль.
и результат стабильно одинаковый для драйверов jungle(windrv) и libusb0.dll(v0.1.8 и v0.1.10.1)
чертовщина какая-то. я в отчаянии..
Rouse_ (2007-07-11 10:39:00) [11]Еще название девайса укажи...
Сергей М. (2007-07-11 10:28:00) [12]Удалено модератором
REA (2007-07-11 10:27:00) [13]Подробности в студию.
А профайлером погонять пробовали?
vasilii (2007-07-11 10:21:00) [14]Удалено модератором
Rouse_ (2007-07-11 10:20:00) [15]Еще проблемма может быть в обьектниках от разработчика драйвера линкуемых к твоему проекту. Они различны для языков.
Anatoly Podgoretsky (2007-07-11 10:18:00) [16]Коллективные руки
vasilii (2007-07-11 10:17:00) [17]в общем - да. но это не только моё творчество, а коллективное.
Сергей М. (2007-07-11 10:06:00) [18]Надо понимать, ты тот самый VC-программер, коль так реагируешь ?)
vasilii (2007-07-11 10:03:00) [19]есть идеи поумнее?
Сергей М. (2007-07-11 08:12:00) [20]
> в чём здесь может быть дело
Не исключено, что дело в кривых руках VC-программиста