Standalone Atmega328p AU runs at slower clock

I have been trying to program Atmega328p au- custom board using both arduino uno as ISP programmer and USBasp programmer. When I program Arduino UNO GENUINE Board the code runs fine but on my custom board the same code runs 10 times slower. Even in simple LED blink code the delay() works slower on my custom board than Arduino UNO Board. Did not make any changes to IDE default settings for either.

Custom board details:
Controller: Atmega328p_au (smd TQFP package)
10K pullup for reset pin,
16Mhz crystal with 22pF caps
0.1uF accross all VCC / GND
Custom board powered using VCC from USBasp or Arduino UNO as ISP. But same result when powered with external 5V power
Windows 7
Arduino IDE

Any help will be appreciated

(deleted)

Set the fuses to use the high frequency crystal, and unset the CLK_DIV_8 fuse.

M also facing the same issue and done both steps as sugested in this thread.
set the fuses for external oscillator and uncheck the div by 08

also uploaded the hex fie with bootloader ( one of the 02 hex generated by arduino compilation has bootloader. )

interestingly with exact same settings( fuse setting and other hardware) when i use another atmega328 it works fine .