How can I detect known frequencies using most efficient algorithm I have a set of ultrasonic frequency that I am playing and I want to detect these particular set of known frequencies. 

I have already used fft but it is quite processing intensive and I am facing problem when I implemented it in real-time. Then I used Goertzel algorithm with threshold values which worked fine in real-time when the fundamental frequencies where the known frequencies but once these frequencies were played alongside other frequencies (noise), which were sometimes more prominent than the ultrasonic ones, the ultrasonic ones expectedly did not cross the threshold and did not get detected. 

Is there any other algorithm which I can try for my requirement given that I just want to detect known set of frequencies and is not that computation intensive like fft?
A better way to use a Goertzel filter, than with a fixed threshold, is to compare a narrow-band Goertzel filter output with the energy of the total signal or a wider bandwidth Goertzel filter.  Look for a peak statistically above a level corresponding to the wider noise energy level.