Questions tagged «program-analysis»


1
缓存算法理论的最新发展水平是什么?
最近,我对以下问题感到最感兴趣:在存在不止一种类型的可用内存的情况下,优化内存使用的一般问题,并且在给定内存段的容量和访问它的速度之间要进行权衡。 熟悉的示例是一个程序,该程序决定何时从处理器高速缓存,RAM和硬盘驱动器(通过虚拟内存)进行读取 / 写入。 我对特殊情况特别感兴趣,在这种特殊情况下,需要加载的数据量(包括程序本身)大大超过了可用最快存储的容量(即,“仅加载所有内容”的简单解决方案不适用)。 我发现一个Wikipedia页面描述了一些常见的缓存算法,这几乎是我想要的。不幸的是,这些有点底层: 仅当您具有多次访问的子例程时,许多(例如LRU或MRU)才有意义。如果我有一个包含大量子例程的程序,其中某些子例程在给定的运行中从未访问过,而其中一些子例程则被访问过一两次,则此策略将永远无法工作,因为它无法在任何内容上建立足够的数据是常用的,不是。 其他的,例如CLOCK,似乎处理实现的特殊性,而不是真正地攻击问题的根源。 我知道有一种策略,其中一个方法是在测试运行期间首先配置程序,然后为操作系统提供配置文件以进行相应的优化。但是,我们仍然必须解决在构建概要文件时提供真正具有代表性的“示例用法”的问题。 我真正想了解的是:当我们抽象出硬件和软件的所有技术,并在纯理论上讲时,是否有可能以某种方式分析算法的结构,从而制定出一种有效的缓存策略来解决以下问题:它基于对算法正在执行的高级理解?

1
别名分析文献
我正在用CS撰写硕士学位论文,并且正在使用别名分析。我感兴趣的是针对类Java语言的过程内,流量敏感的必须和可能混淆分析。 我正在搜索详细描述该主题基础知识的文本,但无法找到真正合适的内容。 我在许多关于编译器和静态分析的教科书中幸存下来,但在那儿什么也没找到。 我发现有许多使用别名分析的论文,但是大多数论文都集中在应用别名分析的问题上,并且没有详细描述别名分析算法。其他人则把重点放在C上,因为通用指针增加了复杂性,因此C不合适。 我发现的最好的文本是Whaley和Rinard撰写的论文Java程序的成分指针和转义分析。这是一篇很棒的论文,也是一个很好的起点,但是没有专门讨论别名分析。 这个问题似乎太普遍了,因此我希望可以使用一些规范的算法来解决。 是否有人对这个主题的文本有任何指示?

2
编程语言中的抽象解释的目标是什么?
我现在试图更好地理解编程语言中的“抽象解释”是什么。我找到了一本很好的书,该章解释了用最小固定元素扩展域的思想,为连续函数产生固定点的四个公理等等。我了解了这些技术细节(尽管我不确定整个方案中到底指的是“抽象解释”)。 我不确定是什么促使使用抽象解释?它只是确定可计算功能的固定点吗?主要动机是否来自大多数编程语言中的递归? 也将很高兴获得一些高层次的概述,该概述对具有计算机科学学位的人的技术确实足够深入。我发现Wikipedia页面令人不安。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.