runtime

什么是runtime?

runtime直译就是运行时间,run(跑,运行) time(时间),网上大家都叫它运行时,它是一套比较底层的纯C语言API,属于一个C语言库,包含了很多底层的C语言API,它是OC的幕后工作者,我们平时写的OC代码,在运行过程时,都会转为runtime的C语言代码

runtime有什么用?

如果你之前不知道runtime,可能觉得它没什么用,其实他的作用非常强大.下面我们就以代码的形式为大家揭开runtime的神秘面纱

作用1  获取一个类全部成员变量名(如果你的成员私有,也可以获取到)

我们新建一个Person类,.h代码如下

24E6D740-14ED-4483-912D-AA675C87C23B.png

这些成员变量都是公有的,我们直接点开头文件就可以看到,如果是系统的类呢,你是不是就不知道类里面有哪些成员了,利用runtime可以轻松解决这个问题,现在我们来测试一下,记得要加 #import 

E29E193D-97EA-4D7D-8BA8-88BBB9F17F5F.png

打印结果

694E976C-DD22-4770-9FA4-98B89C4C680C.png

你可以试一下,把所有的成员放到.m文件里面,它打印的结果是一样的.

作用2  同理,我们可以获取到一个类的全部属性名

0A0504F7-FACB-4C2B-8D9C-C0A59D7FBDEE.png

打印结果:

29601516-8E4F-4C98-896D-863541F9CFBC.png

作用3 获取一个类的全部方法

5635D473-40DC-45AA-9522-9732563E6556.png

打印结果:

C057CCB2-5931-4325-99A8-4FCA10339CA1.png

我们可以看到所有的方法

作用4 获取一个类遵循的所有协议

先将遵循的协议给注释掉

721FB3C1-C646-4D96-9EAC-F5B7205F25F3.png

测试代码

0B6EA858-DF32-4ADF-9607-DC9A3A305482.png

结果啥都没有打印出来

E0457045-9F61-40C2-9600-E5614BD0FA61.png

我们把遵循的代码注释给打开

再执行测试代码,打印结果

E98B1187-E559-42B9-9E56-9A06B5B05020.png

是不是很棒,你可能觉得貌似用处不太大,那接下来我们来看看如何利用runtime归档和解档.

作用5 归档/解档D4DE7A8E-3ED3-4972-A165-7FDA0D8C2D9F.png测试如下:03EDB689-05E0-41F6-B9DF-46722D4DB274.png打印结果:

6E5DDF0C-7E32-417E-8FFF-7D11DAF7EDB4.png

是不是比你以前归档解档简单多了。

runtime作用太大了,学习了才知道,这是我今天学习的过程和一点经验,后续我还会继续把学习的过程分享给大家,希望能给你一些帮助.

参考:



### 安装方法 ONNX Runtime 的安装可以通过 Python 的包管理工具 `pip` 进行。用户可以直接使用以下命令来安装最新版本的 ONNX Runtime: ```bash pip install onnxruntime ``` 如果需要特定版本的 ONNX Runtime,例如版本 1.16.0,则可以使用以下命令指定版本号进行安装: ```bash pip install onnxruntime==1.16.0 ``` 对于某些高级用例或开发需求,可能还需要从源码构建 ONNX Runtime,但这通常适用于有特殊定制需求的开发者[^1]。 ### 使用指南 安装完成后,可以通过 Python 导入 `onnxruntime` 模块来加载并运行 ONNX 模型。以下是一个简单的示例,展示如何使用 ONNX Runtime 加载模型并执行推理: ```python import onnxruntime as ort import numpy as np # 加载模型 session = ort.InferenceSession("path_to_model.onnx") # 准备输入数据 input_name = session.get_inputs()[0].name input_data = np.random.rand(1, 3, 224, 224).astype(np.float32) # 执行推理 outputs = session.run(None, {input_name: input_data}) # 输出结果 print(outputs) ``` 为了确保安装的 ONNX Runtime 性能满足预期,可以运行一些基准测试。这些测试将帮助了解模型在特定硬件上的性能。可以使用 ONNX 模型测试基准工具,或使用自定义脚本来测量推理时间和其他性能指标。例如,使用内置的基准工具: ```bash python3 -m onnxruntime.tools.benchmark --input path_to_model.onnx --input_feed input_name(input_data) --iter 10 ``` 这个命令会执行 10 次推理迭代,并报告平均推理时间等性能指标[^1]。 ### 调试技巧 ONNX Runtime 提供了强大的日志系统,这对于调试模型推理过程中的问题非常有用。通过合理配置日志级别和输出方式,开发者可以更高效地诊断模型推理过程中的各种问题。可以通过设置环境变量来控制日志级别,例如: ```bash ORT_LOG_LEVEL=VERBOSE ``` 此外,还可以通过编程方式配置日志记录器,以便于捕获和分析运行时的日志信息。这有助于快速定位和解决潜在的问题[^2]。 当遇到模型兼容性问题时,比如导出模型时报错 `Unsupported: ATen operator triu`,一种解决方案是替换为等效的 ONNX 算子。具体做法如下: ```python # 修改前 torch.triu(...) # 修改后 torch.onnx.symbolic_opset9.triu = lambda g, input: g.op("Trilu", input, upper=1) ``` 这种修改允许用户在导出模型时绕过 PyTorch 中不支持的操作,从而实现与 ONNX 的兼容[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值