面试题答案
一键面试优点
- 资源及时释放:defer语句能确保文件描述符在函数返回时被关闭,避免资源泄露。即使函数执行过程中出现异常或提前返回,文件描述符也能正常关闭,保证系统资源的合理利用,从长期运行角度维持系统性能稳定。
- 代码简洁清晰:defer将关闭文件描述符的操作后置,使主逻辑代码更简洁。简洁的代码利于理解和维护,间接提升开发和维护效率,在大规模项目中对整体性能有积极影响,因为减少了因代码复杂导致的潜在错误修复时间。
缺点
- 额外性能开销:defer语句会在函数调用时创建一个延迟调用栈,每次执行defer都会有一定的时间和空间开销。在频繁调用的函数中,多次创建和管理延迟调用栈会加重CPU和内存负担,特别是当函数调用非常频繁时,累计的开销可能对性能产生明显影响。
- 延迟资源释放:虽然defer能保证文件描述符关闭,但它是在函数返回时才执行,意味着在函数执行期间文件描述符会一直占用资源。如果函数执行时间较长,这可能导致文件描述符长时间无法被其他操作复用,在高并发场景下对系统资源的有效利用产生不利影响。