小编Blu*_*rer的帖子

当程序将受益于预取和非临时加载/存储?

我做了一个测试

    for (i32 i = 0; i < 0x800000; ++i)
    {
        // Hopefully this can disable hardware prefetch
        i32 k = (i * 997 & 0x7FFFFF) * 0x40;

        _mm_prefetch(data + ((i + 1) * 997 & 0x7FFFFF) * 0x40, _MM_HINT_NTA);

        for (i32 j = 0; j < 0x40; j += 0x10)
        {
            //__m128 v = _mm_castsi128_ps(_mm_stream_load_si128((__m128i *)(data + k + j)));
            __m128 v = _mm_load_ps((float *)(data + k + j));

            a_single_chain_computation

            //_mm_stream_ps((float *)(data2 + k + j), v);
            _mm_store_ps((float *)(data2 …
Run Code Online (Sandbox Code Playgroud)

c sse prefetch temporal

11
推荐指数
1
解决办法
1622
查看次数

Sqlite反转结果集的顺序?

这可能是一个非常基本的问题,但我根本不知道SQL.

为了简化问题,让一个只有一列的表,所以我可以水平写下行:

1 3 11 39 41 45 52 63 66 70 72 80 81 90 92 97
Run Code Online (Sandbox Code Playgroud)

如您所见,它们已经排序.现在,我知道有一行"70",我想在它之前按升序查询5行.那就是我想要的

41 45 52 63 66
Run Code Online (Sandbox Code Playgroud)

我该怎么做查询?

我可以按降序查询5行,然后反转结果集,但我认为应该有更好的方法.

sqlite select

10
推荐指数
1
解决办法
1万
查看次数

如何使用OpenGL正确处理alpha合成

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)正如文档所述,我正在使用alpha编写(实际上在Direct3D文档中说的是相同的东西).

一开始一切都很好,直到我从GPU下载结果并使其成为PNG图像.结果alpha分量是错误的.在绘图之前,我已经清除了具有不透明黑色的帧缓冲区.在我画了一些半透明的东西后,帧缓冲区变得半透明.

opengl alpha

7
推荐指数
1
解决办法
1887
查看次数

如何在Air Native Extension中使用外部Dll?

我的ANE文件的结构如下所示:

<META-INF>
    <ANE>
        <Windows-x86>
            ExtensionDll.dll
            DllUsedByExtensionDll.dll
        extension.xml
mimetype
catalog.xml
library.swf
Run Code Online (Sandbox Code Playgroud)

如果ExtensionDll.dll使用其他Dll中的函数,则不会加载扩展名.DllMain没有被调用.当空中应用程序使用扩展程序运行时,似乎DllUsedByExtensionDll.dll不在Dll搜索路径中.

如果我不想将它们放入一些常见的Dll路径,我应该如何让应用程序找到额外的Dll?

air windows flash dll air-native-extension

6
推荐指数
2
解决办法
3342
查看次数

如何为编译器提供有关循环运行的最长时间的提示

// if I know that in_x will never be bigger than Max
template <unsigned Max>
void foo(unsigned in_x)
{
    unsigned cap = Max;

    // I can tell the compiler this loop will never run more than log(Max) times
    for (; cap != 0 && in_x != 0; cap >>= 1, in_x >>= 1)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

如上面的代码所示,我的猜测是,如果我只是写

for(; in_x!= 0; in_x >> = 1)

编译器不会展开循环,因为它无法确定最大可能的in_x.

我想知道我是对还是错,如果有更好的方法来处理这些事情.


或者也许问题可以概括为好像可以编写一些代码来告诉编译器一些运行时值的范围,并且这些代码不一定被编译成运行时二进制文件.


真的,与编译器XD战斗

// with MSC
// if no __forceinline here, unrolling is ok, but …
Run Code Online (Sandbox Code Playgroud)

c++ loop-unrolling

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

有没有简单的方法来提取附件b格式的h.264原始流?

当我使用命令行使用ffmpeg提取视频流时:

ffmpeg -i {some file} -vcodec copy -an -f {rawvideo | h264 | whatever} out.h264

对于Adobe Media Encoder生成的一些媒体文件,只有.m4v(编码为h.264蓝光)文件可以产生一些可用的结果.

一些其他格式(如.f4v)可以生成h.264流,但没有PPS/SPS,并且每个切片以大小而不是00 00 00 01序列开始.

我希望我可以从包含有效h.264流的尽可能多的文件中提取annexb格式的原始流.我知道我可以自己添加PPS/SPS并将大小更改为00 00 00 01.但有没有现有的软件可以做到这一点?


或者可以保证ffmpeg始终可以从.m4v文件中提取annexb格式的流,无论文件编码的软件是什么?

video ffmpeg extract h.264

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

Android在onTextChanged中调用setText

为了防止无限循环,我做了一件像这样丑陋的事......

    @Override
protected void onTextChanged(CharSequence text, int start,
        int lengthBefore, int lengthAfter) {

    String t = text.toString();
    String tt = t.toUpperCase();

    if (!t.equals(tt)) {

        setText(tt);
    }

    super.onTextChanged(text, start, lengthBefore, lengthAfter);
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以防止onTextChanged在更改文本时调用onTextChanged

android settext

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

android进程被杀后如何"恢复"?

正如在开发指南中所说,活动可以在"应用程序进程被杀死"和"用户导航到活动"之后恢复.首先,我从未见过这样的事情发生过.当它的进程被杀死时,我似乎不能"导航回"一个Activity,在进程消失后,Activity就会从堆栈中消失.

如果发生这样的事情,究竟会发生什么?

我看到了一个奇怪但好的事情:有一个Activity A1Activity A2另一个应用程序启动.现在A2是前台活动.当内存变低时,至少在模拟器上(我可以很容易地占用RAM),A2将被杀死而不是A1.

我担心的是这样的例子:我的应用程序在堆栈上有两个活动,我们称之为A0A1.而且A1,再一次,推出Activity A2另一个应用程序.什么A0时候即将启动A1,它提供A1了对数据对象的引用D.现在如果在A2处于前景时处理A0A1被杀死,D也会丢失.A2完成后,似乎至少A1需要恢复.因此A1将不得不处理恢复D.更重要的是,A1必须找到一种方法来告诉仍然死亡A0的人对恢复的引用D.这是复杂的还是我走错了路?

android android-lifecycle

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