From: Nathan H. <hj...@me...> - 2011-02-24 22:05:00
|
On Feb 24, 2011, at 02:08 PM, Dave Camarillo <dav...@gm...> wrote: Hello, I have a question relating to the timing behavior of libusb under macos. We are using using libusb for linux/mac/windows cross platform USB access to our hardware, and have been researching a timing/performance difference between MacOS and Linux. In particular, on linux, when opening a device it typically takes 0 to 1 milliseconds to open the given device. However, on mac, it takes at minimum 30 ms. Of particular note, is that the time it takes to open a device by a given indexes seems to grow linearly with the i'th device index. I've copied and pasted the debug output below from the mac, and the corresponding code that generated the output. The number on the left is the timestamp in milliseconds that the log message was generated, and the number after 'DBG' is the number of milliseconds since the last debug line was logged. Thoughts? Thanks, -Dave This behavior is to be expected (for now). To be safe, every time a device is opened libusb iterates through the IORegistry to find the corresponding device. The further down the registry the device is, the longer the search takes. The only way I have come up with (so far) to avoid a linear search would be to cache and hold a reference to each device encountered. I am waiting until the hotplug interface is defined to check whether or not it would be a good idea. That said, 30ms is a very short period of time. What sort of application are you writing that needs faster open times? -Nathan |