198_emacs lisp之setq

157 篇文章 3 订阅

         之前学习了几种编程语言了,都比较顺利。现在想想,其实之前我自己学习的都算是类C的编程语言。近一段时间,尝试学习lisp,从common lisp开始的路线看起来似乎是不容易的。网络上找到的口碑很好的《实用common lisp编程》实在是也不符合我自己的脾胃。或许,这本书我还会继续看下去,但是显然不是现在。一直啃读这本书,解构总是昏昏然。我觉得换一个方向,从emacs lisp开始。而我这一次的学习,将从代码阅读开始,不再去专门看一个什么教程了,或许这样我会获得我期待的更好的收获。

         我的代码阅读,就从我使用的emacs的配置开始。今天遇到的第一个未知对象就是setq。通过内置的查询方式,我找到了这个函数的相关描述文档。

         从这个描述看,这个这个函数的实现似乎使用的是C代码,或许这个关乎效率或者使用极其频繁?功能就是给符号赋值,而这个赋值可以是一组符号和数值对儿,也可以是多个。从功能上看来,这里面的赋值其实可以理解为是一个顺序赋值的序列,后面的赋值也可以继承前面的结果。这个赋值的返回值,是最后一个赋值的数值对儿。

         这样,看看我遇到的代码应该如何理解。

         这个功能其实很简单了,就是给gc-cons-threshold这个变量进行赋值为100000000,也就是100M。

         那这个变量有什么具体的含义呢?继续查看相应的帮助文档如下:

         这个变量也是在C代码中定义的,数值为100000000,原始值为800000。

         从功能设计上看,这个应该是在垃圾回收动作之间允许的存储消耗数值,单位是字节。自从上次垃圾回收之后,一旦存储小号的字节数过多垃圾回收就可以自动发生。所有的数据类型都会被统计。

         只有eval被调用的时候,垃圾回收才会发生。通过给这个变量赋一个大一点的值,我们可以在程序的某一部分避免垃圾回收提高效率。

         小结:变量含义可以理解为垃圾回收内存消耗阈值,通过提示,其实还有一个存储消耗百分比可以查看。

         这么看的话,这个setq很可能是可以作用于全局变量的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值