小编Dou*_*g-W的帖子

为什么IronPython在构建为exe然后作为脚本构建时导入模块的速度要慢得多?

我写了一个小脚本用于工作,当开发它时一切都很好但是当我把它翻过来用于生产时,人们抱怨显示第一个表单所花费的时间.展望它,似乎总是花在导入脚本使用的各种模块上.我创建了一个只包含import语句和打印Hello World的新脚本,然后将它作为python脚本和可执行文件运行,结果如下.发生了什么事,有什么方法可以加快速度吗?

Python文件:

$ for i in {1..10}
> do
>   time ./ipy.exe time.py
> done
real    0m1.712s
real    0m1.701s
real    0m1.689s
real    0m1.691s
real    0m1.709s
real    0m1.663s
real    0m1.697s
real    0m1.700s
real    0m1.699s
real    0m1.741s
Run Code Online (Sandbox Code Playgroud)

使用ipy pyc.py /main:time.py/target:exe构建的exe

$ for i in {1..10}
> do
>   time ./time.exe | grep -v user | grep -v sys
> done
real    0m22.119s
real    0m22.116s
real    0m22.133s
real    0m21.816s
real    0m21.985s
real    0m21.785s
real    0m22.010s
real    0m21.686s
real    0m21.877s
real    0m21.944s
Run Code Online (Sandbox Code Playgroud)

time.py的内容: …

ironpython

5
推荐指数
1
解决办法
401
查看次数

C++宏有条件地编译代码?

我想基于宏有条件地编译代码.基本上我有一个看起来像的宏(从真实版本简化):

#if DEBUG
    #define START_BLOCK( x ) if(DebugVar(#x) \
        { char debugBuf[8192];
    #define END_BLOCK( ) printf("%s\n", debugBuf); }
#else
    #define START_BLOCK( x ) (void)0;
    #define END_BLOCK( ) (void)0;
#endif
Run Code Online (Sandbox Code Playgroud)

问题是,如果DEBUG定义了,你可以做以下事情:

START_BLOCK( test )
     char str[] = "Test is defined";
     strcpy(debugBuf, str);
END_BLOCK( )

START_BLOCK( foo )
    char str[] = "Foo is defined";
    strcpy(debugBuf, str);
END_BLOCK( )
Run Code Online (Sandbox Code Playgroud)

一切正常,因为每个块都在它自己的范围内.但是,如果未定义DEBUG,那么您将str在第二个块中重新定义.(嗯,你也debugBuf没有定义,但这只是简化例子的副作用.)

我想做的是让#else成为:

#else
    #define START_BLOCK( x ) #if 0
    #define END_BLOCK( ) #endif
#endif
Run Code Online (Sandbox Code Playgroud)

或者编译一些在开始/结束块之间没有任何东西的方法.我尝试了以上内容,我也尝试过以下方面:

#else
    #define NULLMACRO( …
Run Code Online (Sandbox Code Playgroud)

c++ macros

4
推荐指数
1
解决办法
3859
查看次数

PyDev和Unittesting,没有显示时间/成功运行摘要?

查看PyDev的文档及其在Pydev站点的测试集成,屏幕截图显示了每个测试的输出以及测试运行所需的时间.但是当我运行它时,输出中只显示失败的测试,即使这样,它所用的时间也是空的.我试图在pyunit testrunner配置中增加详细程度,但这只是给系统输出窗口提供了更多输出,而不是PyUnit窗口.有人知道怎么修这个东西吗?(这是4/4 PyDev 2.0版本)

pydev python-unittest

3
推荐指数
1
解决办法
920
查看次数

G ++中的匿名函程?

我有一些代码可以在VS2008中工作,但不能在G ++中工作:

struct IIterationFunctor
{
    virtual bool operator()( SStateInfo& rStateInfo ) = 0;
    virtual ~IIterationFunctor() { }
};

struct SNumItemsFunctor : public IIterationFunctor
{
    SNumItemsFunctor (uint8& nNumItems, uint8 nItemType )
        : m_nNumItems (nNumItems)
        , m_nItemType (nItemType)
    {
        m_nNumItems = 0;
    }

    virtual bool operator() ( SStateInfo& rStateInfo )
    {
        if( rStateInfo.sState.nItemType == m_nItemType )
        {
            ++m_nNumItems;
        }
        return true;
    }

    uint8& m_nNumItems;
    uint8 m_nItemType 
};

void IterateStateInfo( IIterationFunctor& functor )
{
    for (TStateInfoIterator itStateInfo = m_lstStateInfos.Begin(); 
        itStateInfo != m_lstStateInfos.End(); 
        itStateInfo++) …
Run Code Online (Sandbox Code Playgroud)

c++ g++ functor

2
推荐指数
1
解决办法
542
查看次数

标签 统计

c++ ×2

functor ×1

g++ ×1

ironpython ×1

macros ×1

pydev ×1

python-unittest ×1