openedge - 使用 Progress Openedge ABL (ChUI) 程序确定运行时间的最有效方法是什么?
问题描述
对于任何看到这一点的人,
我正在尝试使用基于 Progress Openedge ABL 字符的应用程序来确定许多程序的运行时间。最初,我开始使用 etime 函数并将其作为消息注销。但是,这非常繁琐,因为您必须在每个相应的块中重置 etime。
此后不久,我被告知一种将许多详细信息输出到自定义日志文件的方法。这包括 STRING(NOW)。这有助于缩小范围并使访问/记录时间戳更易于管理。但是,我很好奇是否有一种本机“方法”来查找每个代码块的运行时间并不那么费力?
解决方案
想到的两个主要选项是 LOG-MANAGER 和 PROFILER。
LOG-MANAGER 与您正在做的类似——它写入日志文件,然后您分析。您可能需要 4GL Trace 日志条目类型。
在我看来,PROFILER 更有用。从工具的角度来看,它得到了更好的支持。PROFILER 为您逐行提供微秒级精确计时。您可以将它与自 8.2 以来的任何 Progress 版本一起使用。有几个独立的分析工具可用,或者您可以使用 PDSOE 中的工具(如果有的话)。自己编写也不是那么难。
这两种工具都可以通过启动参数启用:LOG-MANAGER 使用 -clientlog、-logentrytypes 和 -logginglevel 启动参数。PROFILER 是 -profile(或 v8 中的 -zprofile)。
或者,您可以使用代码中的句柄 LOG-MANAGER 或 PROFILER 以编程方式打开/关闭它们并操作属性
这两种工具都有很多 kbase 条目,并且是 PUG 讨论的常见主题,这些讨论涉及血腥细节。
推荐阅读
- java - 从 Spring EventListener 更新 Vaadin 8 UI
- java - 非线程安全字段不应该是静态的,sonar lint 错误
- android - 替换嵌套的 AsyncTasks
- javascript - 具有 1 个数组条件和外部布尔条件的过滤数组
- android - View.GONE 不适用于“Constraint.Group”特定子项
- android - 任务“:app:transformClassesWithShrinkResForDebug”执行失败
- sql - 使用 SSIS 将 CSV 文件值合并到现有 Azure SQL 数据库中
- android - 在 SDK 20 及更低版本中使用选择器的 ImageView 色调
- ios - 在 Objective C 中的 main_queue 上执行动画,为什么?
- html - CSS - 悬停时的弹簧侧边菜单