Use a buffer pool to reduce allocation