So after some experiment, i have the conclusion now. The encode API VTCompressionSessionEncodeFrame will cosume much more time when you increase the frequency of calling it. In our circumstance, the performance of video rendering(mainly GLES) increases on higher models, so we call VTCompressionSessionEncodeFrame more frequently. Those all together result in more video encoding time on higher models. But this phenomenon only become noticeable on iphone 8 and the models above it. And the same problem can be reproduced when you use AVAssetWriter(if you use GPUImage) to encode video. Even you set kVTCompressionPropertyKey_AllowFrameReordering equal to false and kVTCompressionPropertyKey_RealTime equal to true to decrease encoding time. The problem stays the same, a encoder under the same configutation will cosume more time on higher models, starting from iphone 8.
Does anyone has a feasible solution for this?