Common Lisp、asdf、测试、具有不同优化级别的编译系统

2023-12-14

我真正想要的是源内测试定义:

假设我有一个 asdf 系统:

(defsystem simple-system
  :serial t
  :components ((:module "src"
                        :components
                        ((:file "0-package")
                         (:file "1-tests-stubs")
                         (:file "2-code") ...))))

还有另一个系统来测试第一个系统:

(defsystem simple-system-tests
  :serial t
  :components ((:module "src"
                        :components
                        ((:file "0-package")
                         (:file "1-tests-real")
                         (:file "2-code") ...))))

它们之间唯一的区别是在simple-system I have 1-tests-stubs在哪里simple-system-tests I have 1-tests-real. In 1-tests-stubs我定义了一个宏(defmacro def-test (&rest _args) nil)这得到了一个“真正的”实现1-tests-real.

现在我想编译simple-system with (declare (optimize (safety 0) (debug 0) (speed 3)))simple-system-tests与相反的(declare (optimize (safety 3) (debug 3) (speed 0))).

我该怎么做(在哪里放置以及如何以这两个系统的通用方式设置这些声明)?

我怎样才能重用定义simple-system in the simple-system-tests(不要重复自己重新输入所有模块/组件)?

我必须确保所有文件都针对每个系统使用不同的优化级别重新编译。

另外,如果每个系统文件仅在更改时才重新编译(每个系统的已编译文件的自己的副本?),那就太好了。


优化,安全性低。

一般来说我会not建议以零安全性编译整个系统(库或应用程序),如下所示:

(declare (optimize (safety 0) (debug 0) (speed 3)))

将零安全性与类型声明结合使用可能会改变程序的语义,并且错误可能会使程序崩溃。它甚至可能会打开安全漏洞。

我对生产代码的建议是这样的:

  • 优化速度关键部件speed= 3 并保留通常的安全设置(2 或 3)。

  • 如果需要低安全设置来进一步提高速度,则仅在需要时声明它。 Common Lisp 提供函数局部声明和特殊运算符locally其中可以进一步限制声明适用的代码区域。

使优化设置可以更改

* (defparameter *safety* 0)

这是行不通的,因为安全值需要是数字:

*SAFETY*
* (defun foo (a) (declare (optimize (safety *safety*))) (1+ a))
; in: DEFUN FOO
;     (OPTIMIZE (SAFETY *SAFETY*))
; 
; caught WARNING:
;   Ignoring bad optimization value *SAFETY* in: (OPTIMIZE (SAFETY *SAFETY*))
; 
; compilation unit finished
;   caught 1 WARNING condition

FOO

但这是有效的,使用读取时评估:

* (defun foo (a) (declare (optimize (safety #.*safety*))) (1+ a))
WARNING: redefining COMMON-LISP-USER::FOO in DEFUN

FOO

还可以插入整个声明:

* (defparameter *optimization-declaration* '(declare (optimize (safety 0))))

*OPTIMIZATION-DECLARATION*
* (defun foo (a) #.*optimization-declaration* (1+ a))
WARNING: redefining COMMON-LISP-USER::FOO in DEFUN

FOO
* 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Common Lisp、asdf、测试、具有不同优化级别的编译系统 的相关文章

  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • Java 反射性能

    使用反射创建对象而不是调用类构造函数是否会导致任何显着的性能差异 是的 一点没错 通过反射查找类是 按幅度 更贵 Quoting Java关于反射的文档 http java sun com docs books tutorial refle
  • 让 GCC 使用进位逻辑进行任意精度算术而不需要内联汇编?

    当使用任意精度算术 例如 512 位整数 时 有没有办法让 GCC 在不使用内联汇编的情况下使用 ADC 和类似指令 乍一看 GMP 的源代码表明他们只是为每个支持的平台提供了汇编实现 这是我编写的测试代码 它将命令行中的两个 128 位数
  • 为什么我应该使用内联代码? [复制]

    这个问题在这里已经有答案了 我是一名 C C 开发人员 这里有几个始终困扰我的问题 常规 代码和内联代码之间有很大区别吗 主要区别是什么 内联代码只是宏的一种 形式 吗 选择内联代码时必须进行什么样的权衡 Thanks 表现 正如之前的答案
  • 删除大量记录需要很长时间

    我有一个包含约 60 000 行的数据库表 在 SQL Server 2012 Express 上运行 我使用以下代码来清除旧行 Deleting CPU measurements older than oldestAllowedTime
  • 如何从 SBCL 解释器将特定函数写入文件?

    假设我在没有 SLIME 的情况下玩过 SBCL 没有任何简单的解释器 现在我想将几个函数保存在一个文件中 不是核心图像 只是文本形式的一些代码 我该怎么做呢 有两种方法可以做到这一点 使用DRIBBLE and or FUNCTION L
  • lmfit模型拟合然后预测

    我正在领养lmfit进行曲线拟合并使用拟合模型进行预测 然而下面的代码并没有达到我想要的效果 能否请你帮忙 谢谢 import numpy as np from lmfit import Model def linearModel x a0
  • 如何优化这个查询(涉及4毫米表)

    我正在使用如下所示的遗留数据库架构 product table表有字段 uid 整数 主键 name varchar 50 category表有字段 uid 整数 主键 name varchar 50 好吧 现在product table与
  • 单个返回语句与多个返回语句? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • 如何在 Lisp 中生成一系列佩尔数而不是特定的数

    如何使用 cons 或其他方式打印列表佩尔数 https en wikipedia org wiki Pell number直到第N个数 defun pellse k if or zerop k k 1 k 2 pellse k 1 pel
  • 具有行业级约束的 SciPy 投资组合优化

    尝试在这里优化投资组合权重分配 通过限制风险来最大化我的回报函数 我可以毫无问题地通过简单的约束 所有权重之和等于 1 找到产生我的回报函数的优化权重 并做出另一个约束 即我的总风险低于目标风险 我的问题是 如何为每个组添加行业权重界限 我
  • iPhone - dequeueReusableCellWithIdentifier 用法

    我正在开发一个 iPhone 应用程序 它有一个相当大的 UITableView 其中的数据来自网络 所以我正在尝试优化它的创建和使用 我发现dequeueReusableCellWithIdentifier非常有用 但是在看到很多使用它的
  • 有没有办法让这个哈希查找更快?

    我需要 非常 快速处理有限范围的字符串 计算它们的值 输入文件的形式为 January 7 March 22 September 87 March 36 等等 因为线宽相同 所以我可以简单地读取一行fread相当快 而且我已经开发了一个完美
  • 在调用函数两次和将返回值存储在变量中之间选择哪一个?

    我有以下场景 并且我多次遇到类似的场景 以下两个选项中哪一个更可取 选项 1 String result getDetails null getDetails 选项2 String returnValue getDetails String
  • SQL 中的最佳 LIKE 搜索

    我有一个零件数据库 我将不断查询该数据库以获取报价系统 零件数据库有超过 1 400 000 条记录 用户将开始输入零件号 他们希望系统能够在仅几个字符后找到这些零件号 因此我需要能够进行通配符搜索 例如 SELECT NeededFiel
  • 使用 Numba 加速矢量距离计算

    以下是我为 3 D 环形几何中的距离 平方 计算编写的一些函数 用于该 3 D 空间中的粒子集合 import itertools import time import numpy as np import scipy import num
  • C for 循环索引:新 CPU 中的前向索引更快吗?

    在我订阅的邮件列表上 两位知识渊博的 IMO 程序员正在讨论一些优化的代码 并说了以下内容 在 5 8 年前发布的 CPU 上 向后迭代 for 循环稍微快一些 e g for int i x 1 i gt 0 i 因为比较i归零比将其与其
  • 使用实际值检查 cvxpy 中的约束是否正确

    在 cvxpy 中解决优化问题时 是否有一种好方法可以通过用实际值替换优化变量来检查约束是否有效 我有一个复杂的优化问题 100 多个约束 但我知道最佳解决方案应该是什么 但是 cvxpy 失败并显示错误消息ValueError Rank
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an

随机推荐

  • ADFS 2.0 无效名称 ID 策略

    我已经在 adfs 信赖方信任上配置了一个应用程序 因此我可以使用 adfs sso 登录 之后 我安装了 simplesamlphp 来处理该登录 并处理响应 saml 这是我的 authsources 配置 myauth gt arra
  • 关于 iPhone 的方向

    如何获取iPhone当前的方向 我浏览了这个网站 发现了以下两种方法 UIApplication共享应用程序 statusBarOrientation UIDevice currentDevice 方向 哪一种是获取当前方向的正确方法 我在
  • constexpr 使用静态函数初始化静态成员

    要求 我想要一个constexpr值 即编译时常量 计算自constexpr功能 我希望这两个范围都限定在类的命名空间内 即类的静态方法和静态成员 第一次尝试 我首先以 对我来说 显而易见的方式写下这个 class C1 constexpr
  • 有没有办法以编程方式确定字体文件是否具有特定的 Unicode 字形?

    我正在开发一个生成 PDF 的项目 其中可以包含相当复杂的数学和科学公式 文本以 Times New Roman 格式呈现 它具有相当不错的 Unicode 覆盖率 但并不完整 我们有一个系统可以用更完整的 Unicode 字体来替换 TN
  • Big Query 作业失败,并显示“遇到错误字符 (ASCII 0)”。

    我的工作因错误而失败 行 14222274 字段 1 遇到错误字符 ASCII 0 文件的其余部分未处理 数据已被压缩 并且我已验证文件中不存在 ASCII 0 字符 文件中只有 14222273 行 因此错误消息中打印的行号是文件末尾之后
  • Windows 窗体解析问题

    我在 Windows 窗体中开发了 1024 780 分辨率的屏幕 但有人说它在更高分辨率下无法正常显示 有什么办法可以处理这个问题吗 有没有办法让 Windows 窗体应用程序在所有分辨率下看起来都一样 我的建议并不是在所有屏幕上 使其看
  • 使用 EPPlus 将图像添加到 Excel 中

    我正在尝试使用 EPPlus 将同一图像多次添加到 Excel 文件中 我正在使用以下代码来执行此操作 Image logo Image FromFile path ExcelPackage package new ExcelPackage
  • 如何在Excel中对日期进行排序而不重复

    早上好 我有一个关于 Excel 中日期排名的问题 请参见下图 在排名栏中 我用了公式 RANK A3 A A 1 但这不是我想要的 我只希望相同的日期共享与我的目标格式列中显示的相同的排名 谁能告诉我应该应用什么公式来实现这个目标 非常感
  • 蚂蚁为其他蚂蚁服务

    我有几个项目 其中大多数都有 test 目标 运行测试并将结果存储在属性中 测试失败 所有项目都位于同一目录中 大项目 someproject1 big project someproject1 build xml big project
  • Angular Fire Auth 后未收到响应

    使用 AngularFire 注册用户后 我没有收到响应 用户电子邮件出现在 Angular 的身份验证基础上 但登录行为空 并且似乎没有执行 console log 函数 这是我的代码 希望你能帮助我 谢谢 app controller
  • 有没有办法从实例中获取平台和操作系统

    我正在尝试从我的 AWS EC2 实例获取一些信息 我想知道是否有办法提取信息 例如 Platform Version CentOS 6 0 or 7 0 Ubuntu 10 04 or 12 04 Windows 我想知道使用 SDK 是
  • VBA Access - 在 Word 文档中查找和替换文本

    我已经在 Excel 中成功编写了一些 VBA 代码 该代码打开现有的 Word 文档 根据 Excel 工作表中的信息查找并替换字符串 由于存在的源数据来自 Access 数据库 因此我想尝试将 VBA 代码移至 Access 中并从那里
  • 在 Swift 中获取指向 C char 数组的指针

    A 有这样的结构 在 mongodb c 驱动程序的 bson h 中定义 typedef struct uint32 t domain uint32 t code char message 504 bson error t 在 Swift
  • Android 中如何在不通知的情况下更新通知?

    所以我有一个通过 MQTT 接收温度的应用程序 为了避免收到垃圾邮件通知 我希望应用程序通知一次 即振动 播放声音 然后接下来的三次 如果通知没有被忽略 它只会更新温度值 所以 Notify 更新温度 更新温度 更新温度 5 或 1 如果您
  • 数据库错误 MongoDB:数据库消失

    启动了大量的进程 然后重新启动服务器 数据库就消失了 当我走进rockmongo时 我还没有看到旧的数据库 只有一个新的数据库管理员 仅此而已 db serverStatus host host version 2 0 6 process
  • 如何更改 Spring.Net 中的配置

    IoC 容器的一个优点是您可以在对象图底部交换模拟服务 然而 这在 Spring Net 中似乎比在其他 IoC 容器中更难做到 下面是一些在 Unity 中执行此操作并具有 Spring Net 代码的代码 namespace IocSp
  • PHP IMAP 函数的解决方法?尝试使用 XAMPP 处理本地主机上的传入电子邮件

    在我现在正在处理的项目中 我正在尝试添加功能 当用户向支持台发送电子邮件时 我可以将票证状态从 已关闭 更改为 重新打开 我还想将他们的电子邮件回复保存到数据库中 我遇到的问题是我无法让 PHP 的 IMAP 函数在我当前的 Apache
  • Onsen UI 分页:导航器和选项卡栏

    我对混合导航器和标签栏有疑问 说明 主页 Main page1 由两个子页面 tab1和tab2 组成 通过tabbar访问 而其他页面 page2和3 通过导航器访问 tab1 页面是第一个激活的页面 布局 tab1 和 tab2 页面具
  • Struts2中启动过滤器时出现异常[重复]

    这个问题在这里已经有答案了 我在运行 struts 应用程序时遇到这个问题 这是我的web xml具有过滤器类和名称的文件 服务器响应说无法加载类
  • Common Lisp、asdf、测试、具有不同优化级别的编译系统

    我真正想要的是源内测试定义 假设我有一个 asdf 系统 defsystem simple system serial t components module src components file 0 package file 1 tes