我正在运行一个摄像头采集程序,对采集的图像进行处理,我正在使用简单的OpenMP指令进行处理.所以基本上我等待来自相机的图像,然后处理它.
迁移到VC2010时,我看到了非常奇怪的性能问题:在VC2010下,我的应用程序占用了近100%的CPU,而在VC2008下只占用了10%.
如果我只对处理代码进行基准测试,那么VC2010和VC2008之间没有区别,使用采集功能会产生差异.
我已经将重现问题所需的代码减少到一个简单的循环,执行以下操作:
for (int i=0; i<1000; ++i)
{
GetImage(buffer);//wait for image
Copy2Array(buffer, my_array);
long long sum = 0;//do some simple OpenMP parallel loop
#pragma omp parallel for reduction(+:sum)
for (int j=0; j<size; ++j)
sum += my_array[j];
}
Run Code Online (Sandbox Code Playgroud)
这个循环占2008年CPU的5%,2010年占70%.
我做了一些分析,这表明在2010年大部分时间花在了OpenMP上 vcomp100.dll!_vcomp::PartialBarrierN::Block
我还做了一些并发性分析:
在2008年,处理工作分布在3个工作线程上,由于处理时间远远低于图像等待时间,所以它们非常活跃
相同的线程出现在2010年,但它们都被该PartialBarrierN::Block功能100%占用.由于我有四个核心,他们正在吃75%的工作,这大致是我在CPU职业中看到的.
所以看起来OpenMP和Matrox采集库(专有)之间存在冲突.但它是VS2010或Matrox的错误吗?有什么我能做的吗?使用VC++ 2010对我来说是必须的,所以我不能坚持使用2008.
十分感谢
正如DeadMG所建议的那样,使用新的并发框架会导致40%的CPU.分析它显示时间花在处理上,因此它没有显示我在OpenMP中看到的错误,但在我的情况下性能比OpenMP差.
我已经安装了最新英特尔C++的评估版.它显示完全相同的性能问题!!
我交叉发布到MSDN论坛
在Windows 7 64位和XP 32位上测试,结果完全相同(在相同的机器上)
我安装了最新的ffmpeg,但似乎无法找到视频编解码器.我是否需要完成删除ffmpeg并重新运行./configure以使ffmpeg找到视频编解码器?
这是我目前的配置:
FFmpeg version git-f61cbc2, Copyright (c) 2000-2011 the FFmpeg developers
built on Jan 18 2011 10:59:49 with gcc 4.0.1 (Apple Inc. build 5465)
configuration: --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_64
libavutil 50.36. 0 / 50.36. 0
libavcore 0.16. 1 / 0.16. 1
libavcodec 52.108. 0 / 52.108. 0
libavformat 52.94. 0 / 52.94. 0
libavdevice 52. 2. 3 / 52. 2. 3
libavfilter 1.74. 0 / 1.74. 0
libswscale 0.12. 0 / 0.12. 0
或者,我可以重新运行make命令来包含库吗?
这是我的代码转换代码段:
ffmpeg -i ~/Desktop/watercarts.mov …
在Eclipse中,您可以使用菜单贡献来添加将调用命令的工具栏按钮和菜单.除了以编程方式调用命令onclick之外,有没有办法对普通的swt按钮执行此操作?
我是iPhone编程的初学者.我的第一个应用程序是一个UITableViewController,但现在我想尝试一下.我们的想法是创建一个如下所示的自定义布局:
布局:
---------------------
Image | Button
---------------------
UICalendar
---------------------
UITableView
---------------------
Button | Button
---------------------
Run Code Online (Sandbox Code Playgroud)
问题1:正如您所看到的,我想添加一些额外的UI元素.我见过的所有教程都将UITableViewController描述为单个UITableView(控制器中不包含其他UI元素).所以我的问题是可以扩展UITableViewController以实现这种布局吗?什么是正确的方法呢?
问题2:对于UITableViewController,我不使用XIB文件,但有些人会这样做.为什么我在创建UITableViewController时会使用XIB文件?有什么好处?什么是最佳做法?
更新:实际上我正在考虑的是为UICalendar(UICalendarController)和UITableView(UITableViewController)分别设置一个控制器.我只是不知道如何实现它.
谢谢.
我想使用Reactive Extensions转换一些消息,并在一小段延迟后转发它们.
消息看起来像这样:
class InMsg
{
int GroupId { get; set; }
int Delay { get; set; }
string Content { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
输出看起来像这样:
class OutMsg
{
int GroupId { get; set; }
string Content { get; set; }
OutMsg(InMsg in)
{
GroupId = in.GroupId;
Content = Transform(in.Content); // function omitted
}
}
Run Code Online (Sandbox Code Playgroud)
有几个要求:
给定一个Observable <InMsg>和一个Send函数:
IObservable<InMsg> inMsgs = ...;
void Send(OutMsg o)
{
... // publishes transformed messages
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用Select来执行转换.
void SetUp()
{
inMsgs.Select(i …Run Code Online (Sandbox Code Playgroud) 想要知道是否有任何函数/类/等...来帮助我的HTML因此而影响电子邮件的990字符限制.
问题:( 来源)
请注意,邮件服务器对电子邮件中包含的每一行都有990个字符的限制.如果发送的电子邮件包含长度超过990个字符的行,则这些行将被其他行结束字符细分,这可能会导致电子邮件中的损坏,特别是对于HTML内容.要防止这种情况发生,请在电子邮件中的适当位置添加自己的行结束字符,以确保没有行超过990个字符.
其他人似乎都有这个问题?你是怎么解决这个问题的?
听起来我需要找到一个分割HTML并手动添加换行符的好地方,呃......
更新:
它是包含许多行的指法数据.所以我需要添加一个\n或<br />某个地方?
更新#2:添加MIME类型代码
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1\r\n";
$headers .= "Content-Transfer-Encoding: quoted-printable\r\n"; // added this, but still no results
$headers .= "From: from@email.com\r\n";
Run Code Online (Sandbox Code Playgroud)
这是我如何调用函数:
我原来怎么称呼:
return $html;
Run Code Online (Sandbox Code Playgroud)
我尝试了什么:
return imap_8bit($html); // not working, nothing is captured in the error log
Run Code Online (Sandbox Code Playgroud)
和
return imap_binary($html); // not working, nothing is captured in the error log
Run Code Online (Sandbox Code Playgroud)
更新#3(添加邮件功能)
try {
mail(
'to@email.com',
'Subject of Email',
$html,
$headers
);
} catch …Run Code Online (Sandbox Code Playgroud) 我有一个数据结构,我希望能够在关闭程序之前写入文件,然后从文件中读取以在下次应用程序启动时重新填充结构.
我的结构是HashMap<String, Object>.对象非常简单; 对于成员变量,它有一个String,以及两个Boolean类型的小型本机数组.这是一个真正简单的应用程序,我不希望一次超过10-15 <key,value>对.
我一直在使用Object输入/输出流进行实验(不成功).我是否需要使Object类可序列化?
你能给我任何关于最佳方法的建议吗?我只需要朝着正确的方向努力.谢谢!
编辑:嗯,我仍然感到愚蠢,我正在从一张地图写入并阅读另一张地图,然后比较它们以检查我的结果.显然我在比较他们错了.叹.
.net ×1
asp.net ×1
c# ×1
c++ ×1
collections ×1
command ×1
eclipse ×1
ffmpeg ×1
file-io ×1
html-email ×1
iphone ×1
java ×1
libavcodec ×1
linux ×1
mail-server ×1
mono ×1
mysql ×1
openmp ×1
performance ×1
php ×1
qt ×1
sql ×1
swt ×1
uitableview ×1
xcode ×1