Yeah, it's pretty hard to measure.

If you don't mind a little bit of error, you can measure efficiency by going up a long hill. On uphills when there's not much wind, usually not much energy is lost to air resistance.

You can find out how many joules of energy went in to lifting the weight of your bike by calculating:

joules = (number of kilograms of mass, bike + rider) * (number of vertical meters you went up) * 10

you'd have to estimate the difference between the energy-output of the motor and the energy that went into lifting the bike+rider. If I were to guess I'd say the energy-output (joules) of the motor is about 1.03 * (energy that went into lifting the bike+rider vertically) - about 3% of the energy might be lost in ball bearings, tires, wind resistance, etc.

convert joules to watt hours. (try an online conversion web site)

figure out how many watt hours of actual energy-output you got from your battery by using an appropriate meter.

calculate:

(estimated number of watt hours energy-output from motor)

(divided by)

(watt hours you got from battery)

If you multiply by 100 you'll get the percentage efficiency of your motor+controller combination.

Note that if you run your motor on a steeper slope than it is intended for, your motor efficiency will be very low. But if you go fast (say, over 15mph) the energy lost to air resistance will be high, making it impossible to estimate efficiency without carefully measuring energy lost to air resistance.