小编Mik*_*ail的帖子

C++函数在双精度数组中找到最大值?

我经常发现自己正在编写最大值函数来搜索一系列双精度函数我使用这些函数来在图形显示之前规范化数据.

有没有更好的方法来找到双打数组的最大值?是否有标准函数来查找数组中的最大值?这个操作有一些内在的东西吗?我记得DSP芯片中存在专门的ASM指令.

c++ arrays floating-point x86

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

Qt OpenGL更新速度极慢

我似乎无法让Qt5以有意义的速度更新我的场景.我的场景是一个512x512纹理矩形.我得到的速度大约是每秒1帧(!).

在我的构造函数中

   aTimer.setSingleShot(false);
   aTimer->setTimerType(Qt::PreciseTimer);
   connect(&aTimer,SIGNAL(timeout()),this,SLOT(animate()));
   aTimer.start(50);
   setAutoFillBackground(false);
Run Code Online (Sandbox Code Playgroud)

void GLWidget::animate()
{
//Logic for every time step
updateGL();
}
Run Code Online (Sandbox Code Playgroud)

有没有办法设定优先权?我做的事情完全是错的吗?在Qt中是否存在某种内在的更新限制,它肯定不是1 FPS的顺序?我的理论是,Qt忽略了我实际更新屏幕的要求.

我试过了

  1. 插入一个,QCoreApplication::processEvents(); 但这没有帮助
  2. 在父窗口小部件上调用更新,并从父窗口运行计时器
  3. 创建一个名为animate()的函数,该函数运行forever{}并从中调用update
  4. 这个wigglywidget例子似乎有效,这告诉我QT OpenGL以某种方式折叠帧,忽略了我的更新调用.是否存在控制此问题的启发式方法?

要重新创建的最小代码

(版本有点不同,在wigglywidget类之后建模,但有完全相同的问题)

git clone https://bitbucket.org/FunFarm/qtcapturesoftware.git
Run Code Online (Sandbox Code Playgroud)

glwidget.h

/****************************************************************************/

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>
#include <QtOpenGL/qglshaderprogram.h>
#include <QTimer>
#include <math.h>
#include "time.h"
#include <assert.h>
#include <random>

class GLWidget : public QGLWidget
{
    Q_OBJECT

public:
    GLWidget(QWidget *parent = 0);
    ~GLWidget();
    void addNoise();
protected:
    void initializeGL();
    void paintGL();
    void timerEvent(QTimerEvent *event); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl animation qt qt5

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

/ arch:AVX启用AVX2吗?

我找不到这个简单问题的答案,/arch:AVX在Visual Studio 2012 Update 4上启用AVX2及其精美的256位寄存器吗?

思路:

是的,它启用了AVX,因为VS没有提到AVX2.但我认为VS可以做AVX2,因为我的内在工作.

不,它不是因为SSE和SSE2是分开的

AVX2

c++ vectorization avx2 visual-studio-2012

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

为什么gcc和NVCC(g ++)看到两种不同的结构尺寸?

我正在尝试将CUDA添加到90年代末期编写的现有单线程C程序中.

为此,我需要混合两种语言,C和C++(nvcc是一个c ++编译器).

问题是C++编译器将结构看作某个大小,而C编译看到的结构与稍微不同的大小相同.那很糟.我真的很困惑,因为我找不到4字节差异的原因.

/usr/lib/gcc/i586-suse-linux/4.3/../../../../i586-suse-linux/bin/ld: Warning: size of symbol `tree' changed from 324 in /tmp/ccvx8fpJ.o to 328 in gpu.o
Run Code Online (Sandbox Code Playgroud)

我的C++看起来像

#include <stdio.h>
#include <stdlib.h>
#include "assert.h"
extern "C"
{
#include "structInfo.h" //contains the structure declaration
}
...
Run Code Online (Sandbox Code Playgroud)

和我的C文件看起来像

#include "structInfo.h"
...
Run Code Online (Sandbox Code Playgroud)

与structInfo.h看起来像

struct TB {
   int  nbranch, nnode, root, branches[NBRANCH][2];
         double lnL;
}  tree;
...
Run Code Online (Sandbox Code Playgroud)

我的make文件看起来像

PRGS =  prog
CC = cc
CFLAGS=-std=gnu99 -m32
CuCC = nvcc
CuFlags =-arch=sm_20
LIBS = -lm -L/usr/local/cuda-5.0/lib -lcuda -lcudart
all : $(PRGS)
prog: 
        $(CC) …
Run Code Online (Sandbox Code Playgroud)

c c++ gcc cuda nvcc

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

有没有办法在Visual Studio 2012中使用委托构造函数?

通过查看C++ 11的新功能,委托构造函数似乎在我的情况下特别有用.

不幸的是,我需要使用Visual Studio.我正在进行的项目有几个月的截止日期,使用实验/破坏的编译器并不关心我.是否有可以让我进行构造函数委派的Visual C++版本?

http://www.stroustrup.com/C++11FAQ.html#inheriting

c++ visual-studio visual-c++ c++11 visual-studio-2012

6
推荐指数
1
解决办法
4790
查看次数

加速投注的空头?

我在C++中有一个简短的浮动转换,这是我的代码瓶颈.

该代码从硬件设备缓冲区转换,该缓冲区本身是短路的,这代表来自花式光子计数器的输入.

float factor=  1.0f/value;
for (int i = 0; i < W*H; i++)//25% of time is spent doing this
{
    int value = source[i];//ushort -> int
    destination[i] = value*factor;//int*float->float
}
Run Code Online (Sandbox Code Playgroud)

一些细节

  1. 值应该从0到2 ^ 16-1,它表示高灵敏度相机的像素值

  2. 我在配备i7处理器的多核x86机器上(i7 960是SSE 4.2和4.1).

  3. 源与8位边界对齐(硬件设备的要求)

  4. W*H总是可被8整除,大部分时间W和H可被8整除

这让我感到难过,有什么我可以做的吗?

我正在使用Visual Studios 2012 ...

c++ x86 sse type-conversion

6
推荐指数
3
解决办法
5566
查看次数

如何在Qt Designer UI文件中清除QMainWindow的几何标记

Qt Designer添加一个几何标签,其中包含小部件的默认大小(绝对单位(像素)).

这真的很烦人,因为如果你ui在4k显示器上编辑一个文件,你ui的所有s(默认情况下)会在较低的DPI系统上显示大量的空白区域.

如果我手动删除此标记,我的窗口在首次显示时具有预期的大小,但每次ui在Qt Designer中打开它时手动编辑每个文件都会出错.

我正在使用Qt 5.9.

什么是阻止Qt Designer添加此XML标记的范例方法?

example.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Example</class>
 <widget class="QMainWindow" name="Example">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>970</width>
    <height>1371</height>
   </rect>
  </property>
Run Code Online (Sandbox Code Playgroud)

c++ qt qt-designer qt5 uic

6
推荐指数
1
解决办法
374
查看次数

tlb文件是否具有关联的体系结构?

我有一个32位DLL,旨在通过com模型和关联的tlb文件进行访问。

DLL似乎是x86。

有什么办法可以从x64程序访问这种DLL?TLB文件x86 / x64是否不可知?

我问是因为某些功能似乎起作用,其他功能崩溃了,还没有??是??失踪??c?o?m?p?a?r?e?d??至??t?h?e??。?净??a?s?s?e?m?b?l?i?e?s?。

- 编辑 -

由于OEM方面的错误而出现缺少的程序集。

c++ windows com 32bit-64bit

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

如果我不触摸它,为什么 multiprocessing 会复制我的数据?

我正在追踪一个内存不足的错误,并惊恐地发现 python 的多处理似乎复制了大数组,即使我无意使用它们。

为什么python(在Linux上)这样做,我认为写时复制可以保护我免受任何额外的复制?我想,每当我引用对象时,都会调用某种陷阱,然后才进行复制。

对于任意数据类型(例如 30 GB 的自定义字典使用Monitor? 有什么方法可以构建 Python 使其没有这些废话吗?

import numpy as np
import psutil
from multiprocessing import Process
mem=psutil.virtual_memory()
large_amount=int(0.75*mem.available)

def florp():
    print("florp")

def bigdata():
    return np.ones(large_amount,dtype=np.int8)

if __name__=='__main__':
    foo=bigdata()#Allocated 0.75 of the ram, no problems
    p=Process(target=florp)
    p.start()#Out of memory because bigdata is copied? 
    print("Wow")
    p.join()
Run Code Online (Sandbox Code Playgroud)

跑步:

[ebuild   R    ] dev-lang/python-3.4.1:3.4::gentoo  USE="gdbm ipv6 ncurses readline ssl threads xml -build -examples -hardened -sqlite -tk -wininst" 0 KiB
Run Code Online (Sandbox Code Playgroud)

python multithreading multiprocessing python-3.x

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

对齐 QComboBox 中的文本而不使其可编辑?

我有一个QComboBox看起来像: 在此输入图像描述

在网上,您会看到很多人发布代码将标签居中,QComboBox如下所示:

 auto cmb = new QComboBox(parent);
 cmb->setEditable(true);
 cmb->lineEdit()->setReadOnly(true);
 cmb->lineEdit()->setAlignment(Qt::AlignCenter);
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它改变了小部件的行为,要求用户使用小部件侧面的微小导航按钮: 在此输入图像描述

我尝试使用样式表属性,但似乎没有效果

{
             cmb->setProperty("text-align", "center");
             cmb->style()->unpolish(cmb);
             cmb->style()->polish(cmb);
             cmb->update();
}
Run Code Online (Sandbox Code Playgroud)

有人知道如何在QComboBox不将其设置为可编辑模式的情况下将其居中吗?C++/Python 解决方案很好。

qt

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