A frequency doubler works best with a sinusoidal signal. I wouldn't want to try it with a non-sinusoidal signal.
There are a couple of other ways to do it with a sinusoidal signal.
You could use an analog multiplier and multiply the sine wave by itself to square it.
You could use a phase lock loop with a divide by 2 prescaler.
For non-sinusoidal signals I can think of 2 more but neither is real time.
Use an ADC and store the values in memory. Read the memory out at double the ADC rate.
Convert to digital with an ADC and do a Fourier Transform. Then multiply the frequencies by two and do an inverse transform back to time domain.
Usually frequency doublers are reasonably efficient. Just run a class C amplifier at half of the design frequency. There are other schemes to double frequencies with discreet components. One that comes to mind is to use a bridge rectifier and then bandpass filter the output.