[igt-dev] [PATCH i-g-t] lib: Use a bsearch to find the module name
Petri Latvala
petri.latvala at intel.com
Mon Sep 3 09:39:31 UTC 2018
On Sat, Sep 01, 2018 at 07:09:11PM +0100, Chris Wilson wrote:
> Even with a small number of known drivers (6), a bsearch will take at
> most 3 steps, whereas the linear search will take 3 steps on average. In
> the future with more known drivers, the logN bsearch will be even more
> advantageous.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Katarzyna Dec <katarzyna.dec at intel.com>
> ---
> lib/drmtest.c | 12 +++++++++---
> 1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/lib/drmtest.c b/lib/drmtest.c
> index 93228f900..bfb38f1e9 100644
> --- a/lib/drmtest.c
> +++ b/lib/drmtest.c
> @@ -222,9 +222,15 @@ static int open_device(const char *name, unsigned int chipset)
> if (__get_drm_device_name(fd, dev_name, sizeof(dev_name) - 1) == -1)
> goto err;
>
> - for (const struct module *m = modules; m->module; m++) {
> - if (strcmp(m->module, dev_name) == 0) {
> - chip = m->bit;
> + for (int start = 0, end = ARRAY_SIZE(modules) - 1; start < end; ){
> + int mid = start + (end - start) / 2;
> + int ret = strcmp(modules[mid].module, dev_name);
> + if (ret < 0) {
> + end = mid;
> + } else if (ret > 0) {
> + start = mid + 1;
Isn't this the wrong way around?
--
Petri Latvala
> + } else {
> + chip = modules[mid].bit;
> break;
> }
> }
> --
> 2.19.0.rc1
>
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev
More information about the igt-dev
mailing list