小编jlu*_*ick的帖子

CMake Custom Command复制多个文件

我试图使用该${CMAKE_COMMAND} -E copy <from> <to>格式复制多个文件,但我想知道是否有办法提供一些文件复制到特定目录.似乎cmake副本只允许一次复制一个文件.当我宁愿提供要复制的文件列表作为第一个参数时,我真的不想重复使用复制命令.

我认为最简单的解决方案是使用平台相关的"cp"命令.虽然这对于便携性肯定不好,但我们的系统保证在Linux上构建.一个简单的,独立于平台的解决方案会更好.

cmake

20
推荐指数
3
解决办法
2万
查看次数

Guava Charmatcher静态初始化缓慢

更新:看起来我的13.0.1正在调用来自这个差异化CharMatcher的代码.

http://code.google.com/p/guava-libraries/source/diff?spec=svn69ad96b719d7cd3d872a948d7454f17b816a21c2&r=464b0cfab7c3b6713c35e6f3ae7426542668c77b&format=side&path=/guava/src/com/google/common/base/CharMatcher.java

我似乎遇到了番石榴的Charmatcher的问题.我目前正在编写一些JUnit测试,我注意到第一次测试花费了一些时间(15+秒),但未来的测试大致相同(.3秒),大多数测试都是通过相同的码.

我对代码的分析表明,Guava图书馆中的Charmatcher似乎是罪魁祸首.看起来CharMatcher中有一些静态初始化代码可能是它花费这么长时间的真正原因.有什么办法可以禁用或优化这种行为吗?维基页面或帮助文件中是否存在我遗漏的内容?

Guava版本13.0.1,系统:Linux 64,Eclipse 3.6.1

编辑:我用以下代码构建了一个测试应用程序:

import com.google.common.base.CharMatcher;

public class Main {
    public static void main(String[] args) {
        // Using system instead of stopwatch to isolate library.
        long startTime = System.currentTimeMillis();
        CharMatcher.is(' ');
        long endTime = System.currentTimeMillis();
        System.out.println("took " + String.valueOf(endTime-startTime) + " ms");

        startTime = System.currentTimeMillis();
        CharMatcher.is('d');
        endTime = System.currentTimeMillis();
        System.out.println("2nd took " + String.valueOf(endTime-startTime) + " ms");
    }
}
Run Code Online (Sandbox Code Playgroud)

这导致以下输出:

took 15945 ms
2nd took 0 ms
Run Code Online (Sandbox Code Playgroud)

我在eclipse中运行了这个减去JUnit框架和google的guava库.我还打包了一个可执行的char并收到了类似的结果.在我通过它运行一个分析器后,我会再回来进行第二次编辑.

谢谢你的帮助.

编辑2:分析结果:

Main.main(String[])                                                                  22,556 ms
com.google.common.base.CharMatcher.<clinit>()                                     22.556 ms …
Run Code Online (Sandbox Code Playgroud)

java guava

9
推荐指数
1
解决办法
1202
查看次数

标签 统计

cmake ×1

guava ×1

java ×1