我有一个应用程序,内部循环的一部分基本上是:
double sum = 0;
for (int i = 0; i != N; ++i, ++data, ++x) sum += *data * x;
Run Code Online (Sandbox Code Playgroud)
如果x是unsigned int,那么代码需要3倍于int!
这是一个更大的代码库的一部分,但我把它归结为要点:
#include <iostream>
#include <cstdlib>
#include <vector>
#include <time.h>
typedef unsigned char uint8;
template<typename T>
double moments(const uint8* data, int N, T wrap) {
T pos = 0;
double sum = 0.;
for (int i = 0; i != N; ++i, ++data) {
sum += *data * pos;
++pos;
if (pos == wrap) pos = 0;
} …Run Code Online (Sandbox Code Playgroud) 只是为了澄清我在这里看到的一点间接回答:
在主要运行应用程序的多CPU /多核机器上使用的最好的GC是ConcurrentMarkSweeper(又名-XX:+ UseConcMarkSweepGC)?
还有,有一种叫做G1的东西,什么时候可以用于Java6?
编辑:我正在使用Sun Java VM,1.6.0_16-b01.我有实时(尽可能接近Java实时)应用程序,并且自然希望GC扫描尽可能短.有足够的CPU功率(ConcMarkSweep似乎需要).
谢谢.
考虑以下:
struct Point {double x; double y;};
double complexComputation(const& Point p1, const Point& p2)
{
// p1 and p2 used frequently in computations
}
Run Code Online (Sandbox Code Playgroud)
编译器是否将pass-by-reference优化为pass-by-copy以防止频繁解除引用?换句话说转换complexComputation成这个:
double complexComputation(const& Point p1, const Point& p2)
{
double x1 = p1.x; double x2 = p2.x;
double y1 = p1.y; double y2 = p2.y;
// x1, x2, y1, y2 stored in registers and used frequently in computations
}
Run Code Online (Sandbox Code Playgroud)
由于Point是一个POD,通过在调用者的背后制作副本可以没有副作用,对吗?
如果是这种情况,那么我总是可以通过const引用传递POD对象,无论多小,都不必担心最佳传递语义.对?
编辑:我特别感兴趣的是GCC编译器.我想我可能要编写一些测试代码并查看ASM.
如果您使用Dao方法(伪代码)进行调用:
return ..getHibernateTemplate(get by id);
现在说该实体有一个延迟加载的集合.一旦你使用hibernateTemplate助手方法从你的Dao返回,为什么会话保持在范围内并允许你延迟加载一个集合?
会话是基于每个请求在全局级别初始化和提交的吗?
更新
请解释一下"getcurrentsession"的确切调用,以及它何时实际关闭/提交?
根据我的理解,spring框架必须处理会话生命周期,它在哪里执行此操作?请求生命周期中的什么时候?
它也在处理工作单元,在哪里/如何?
我使用Google的Eclipse插件在Eclipse中创建了一个google-app-engine java项目.我以前的部署尝试失败了.现在,当我重试时,我收到以下消息:
无法更新应用:错误发布到网址:http://appengine.google.com/api/appversion/create? app_id = mybdaywisherversion = 1 409冲突此应用和主要版本的此用户的另一项交易正在进行中.该用户可以使用appcfg.py的"rollback"命令撤消该事务.
现在,我一直只使用Eclipse内部的google-app-engine功能,并且不知道如何运行appcfg.py命令.
无法从互联网上提供的文档中获得太多帮助.我唯一可以解决的是mac(我在Mac上),要使用的命令是appcfg.sh.在Eclipse内部,我查看了App-Engine SDK在我的机器上的位置并转到了该位置.甚至在那里找到了appcfg.sh.但是当我尝试运行它时,它只报告错误"未找到命令".尝试了各种替代方案来运行它(比如尝试使用sudo运行它,尝试将其作为./appcfg.sh运行,看它是否位于其中)但没有成功
有人可以告诉我运行apcfg命令后必须遵循的步骤吗?
在使用win32com和/或active_directory的python w/Outlook 2007中,如何获取对子文件夹的引用,以便将MailItem移动到此子文件夹?
我有一个收件箱结构,如:
收件箱
|
+ - 测试
|
` - todo
我可以访问收件箱文件夹,如:
import win32com.client
import active_directory
session = win32com.client.gencache.EnsureDispatch("MAPI.session")
win32com.client.gencache.EnsureDispatch("Outlook.Application")
outlook = win32com.client.Dispatch("Outlook.Application")
mapi = outlook.GetNamespace('MAPI')
inbox = mapi.GetDefaultFolder(win32com.client.constants.olFolderInbox)
print '\n'.join(dir(inbox))
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试test根据Microsoft的示例获取子目录时,该inbox对象没有Folders接口或任何方式来获取子目录.
如何获得Folder指向testsubdir 的对象?
我需要在没有剩余磁盘空间的情况下测试我的Web应用程序,即我无法再写入任何文件.但我不想用垃圾填满我的硬盘只是为了确保没有剩余的空间.我想要的是用特定的过程(实际上是一个PHP应用程序)来模拟这种情况.
实际上,暂时禁止磁盘写入进程必须足够.
最简单的方法是什么?我正在使用带有内置Apache/PHP软件包的Mac OS X 10.6.2.谢谢.
编辑:磁盘可用空间检查不可靠,因为它可以随时更改.许多页面同时提供.检查时可以有足够的可用空间,但是当你实际写东西时没有空间.此外,检查磁盘可用空间将需要在我写入文件的任何地方更改代码,这不是我想要的:-)最后,这个解决方案与我正在尝试测试的完全相反:我的应用程序将在何时表现它不能再写了.
有没有办法自定义MediaController?我需要改变按钮的样式,SeekBar等.
我比java编程语言更熟悉我喜欢从网站中提取数据并将其存储到我的机器上运行的数据库中.这可能在java.If中我应该使用哪种API.例如,网站上列出的学校数量如何使用java提取数据并将其存储到我的数据库中.
有没有办法从1到100打印数字而不使用任何循环或条件,如"如果"?我们可以很容易地使用递归但是又有一个if条件.有没有办法不使用"if"?也没有重复的打印语句,或包含1到100之间所有数字的单个打印语句.
Java中的解决方案更可取.