Hmm, there may be another bottleneck:

```
u.Unit('dimensionless'):

In [5]: %timeit float(q)
1000 loops, best of 3: 670 us per loop

u.dimensionless:

In [4]: %timeit float(q)
1000 loops, best of 3: 642 us per loop

u.Unit(1)

In [4]: %timeit float(q)
1000 loops, best of 3: 686 us per loop
```

where

```
q = 1. * u.m / u.s / u.kg
```

and I disabled the warnings with

```
u.quantity.WARN_IMPLICIT_NUMERIC_CONVERSION.set(False)
```

prior to running the timing tests. The bottleneck is actually the comparison itself:

```
In [15]: %timeit q.unit == u.dimensionless
1000 loops, best of 3: 562 us per loop
```

though switching to ``is`` changes quite a lot as you said:

```
In [16]: %timeit q.unit is u.dimensionless
1000000 loops, best of 3: 515 ns per loop
```

Will rerun the above benchmarks with that!