objective-c - 大量选择器是否会降低 Objective-C 程序的速度?

标签 objective-c performance

当我使用运行时函数 sel_registerName 在 Objective-C 程序中注册大量(10000+)附加选择器时,这会减慢我的程序吗?不考虑注册这些选择器所需的时间。

最诚挚的问候, 乔亨

最佳答案

如果您正在创建一组极其病态的命名选择器,并且这些选择器恰好全部堆叠在 Objective-C 方法缓存内的选择器哈希中的一个存储桶中,那么它只会减慢您的应用程序。

不太可能。如果您发现性能问题,请使用 Instruments(或其他一些工具)对其进行测量,并在尝试优化之前确定问题所在。

虽然 rpetrich 的答案是正确的,但每个选择器的 RAM 量很小。就选择器本身而言,它只是一个地址的数据。通常不使用实际的选择器值。如果选择器由静态分配的字符串组成,则任何内容都不太可能真正接触内存(除非您的代码这样做)。

如果您动态生成选择器名称,那么分配显然会占用内存。

(当然,我非常好奇为什么要生成这么多选择器。这是一种非典型的模式!)

关于objective-c - 大量选择器是否会降低 Objective-C 程序的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098592/

相关文章:

ios - 在 RLMArray 上添加或更新对象?

ios - Uitableview Cell Animation like Secret App

objective-c - 如何将 JSON 对象转换为 Objective-C Cocoa 对象?

php - Mysql性能,一表二

c - 我们如何检查我们的程序多线程是否在我们的程序中工作?

ios - 发送到 setDetailModal 实例的无法识别的选择器

objective-c - 正态分布函数

wpf - 提高 WPF UI 渲染速度的方法

c# - TCP 套接字服务器偶尔会随着时间的推移建立 CLOSE_WAIT,直到无法操作

C# 提高 SIMD Sum 的性能