utils: use reflect to reimplement chan
utils: add chan benchmark