optimize buffer alloc