所以早些时候我回答了自己关于在R中向量中思考的问题.但是现在我还有另一个问题,我无法"矢量化".我知道向量更快,循环更慢,但我无法弄清楚如何在向量方法中执行此操作:
我有一个数据框(出于感情上的原因,我喜欢称之为my.data),我想对其进行全面的边缘分析.我需要一次删除一些元素并"数值"数据框然后我需要通过仅删除下一个元素再次进行迭代.然后再做一次......再次......我的想法是对我的数据子集进行全面的边际分析.无论如何,我无法想象如何以矢量有效的方式做到这一点.
我缩短了代码的循环部分,它看起来像这样:
for (j in my.data$item[my.data$fixed==0]) { # <-- selects the items I want to loop
# through
my.data.it <- my.data[my.data$item!= j,] # <-- this kicks item j out of the list
sum.data <-aggregate(my.data.it, by=list(year), FUN=sum, na.rm=TRUE) #<-- do an
# aggregation
do(a.little.dance) && make(a.little.love) -> get.down(tonight) # <-- a little
# song and dance
delta <- (get.love) # <-- get some love
delta.list<-append(delta.list, delta, after=length(delta.list)) #<-- put my love
# in a vector
}
Run Code Online (Sandbox Code Playgroud)
显然我在中间砍掉了一堆东西,只是为了让它不那么笨拙.目标是使用更高矢量效率的东西来移除j循环.有任何想法吗?
由于编译器优化,Switch语句通常比等效的if-else-if语句更快(例如本文中描述的).
这种优化实际上如何运作?有没有人有一个很好的解释?
对于我的大学任务,我必须制作一个可联网的pacman版本.我认为我最好先制作pacman的本地副本,然后扩展此功能以进行网络播放.
我不得不说,我对java GUI开发相对较新,并在java中使用这些功能.
我已经开始关注java中游戏开发的上述链接以及pacman游戏的一个例子.
我决定将迷宫表示为一个int数组,其中不同的值意味着不同的东西.但是当主游戏循环中的paint方法运行时,我正在用这种方法重绘整个迷宫.
for (int i : theGame.getMaze())
{
if (i == 4)
{
g.setColor(mazeWallColour);
g.fillRect(curX, curY, cellSize, cellSize);
curX += 25;
}
else
{
curX += cellSize;
}
index++;
// Move to new row
if (index == 25)
{
index = 0;
curX = 10;
curY += cellSize;
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这为我提供了不到1fps.虽然我已经注意到上面链接的示例使用类似的方式重绘每次调用paint方法,我相信这是在一个不可见的图像(有点像双缓冲[有点像第一个链接使用BufferStrategy]解释])什么是重绘迷宫的更好方法?
任何指针/建议都很有用.
感谢您的时间.
http://pastebin.com/m25052d5a - 主要游戏类.
编辑:我刚刚发现一些非常奇怪的事情发生后,试图看看执行了多长时间的代码.
在我添加的paintClear(Graphics g)方法中
ocean = sprites.getSprite("oceano.gif");
g.setPaint(new TexturePaint(ocean, new Rectangle(0,t,ocean.getWidth(),ocean.getHeight())));
g.fillRect(10, 10,getWidth() - 20,getHeight() - 110);
Run Code Online (Sandbox Code Playgroud)
这让整个事情顺利进行 - 然而当我删除这些线条时,整个事情变慢了?可能是什么导致了这个? …
我的主窗口产生了一个儿童窗口,它位于顶部,看起来像是主要的一部分.我想将子窗口与主窗口同步,但我不确定如何.
我的主窗口有我自己的标题栏,事件MouseLeftButtonDown调用此函数:
public void DragWindow(object sender, MouseButtonEventArgs args)
{
DragMove();
UpdateChildWindowPosition();
}
Run Code Online (Sandbox Code Playgroud)
这导致DragMove()在主窗口上执行,当我拖动标题栏时单独移动主窗口.直到我释放鼠标时才执行UpdateChildWindowPosition(),在鼠标中它读取一些元素坐标并设置子窗口位置 - 您会看到子窗口捕捉到不需要的位置.
如何让子窗口与主窗口同步移动?
我试图在.net wcf服务(特别是支持Silverlight的wcf服务)中提出一个简单易用的设计模式来处理错误.如果在服务方法中抛出异常,silverlight应用程序将看到一个CommunicationException,指出"远程服务器返回错误:NotFound --->",可能还有一个堆栈跟踪,具体取决于您的设置,这完全没有用,因为它没有告诉你实际的错误,通常真正的错误不是"NotFound".
阅读Web服务和wcf服务和异常,您需要抛出soap/wcf标准异常,例如FaultException或SoapException.因此,对于wcf服务,您需要将每个方法包装在try catch中,捕获每个异常,将其包装在FaultException中并抛出它.至少这是我的理解,如果我错了,请纠正我.
所以我创建了我的设计模式:
[ServiceContract(Namespace = "http://MyTest")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class DataAccess
{
/// <summary>
/// Error class, handle converting an exception into a FaultException
/// </summary>
[DataContractAttribute]
public class Error
{
private string strMessage_m;
private string strStackTrace_m;
public Error(Exception ex)
{
this.strMessage_m = ex.Message;
this.strStackTrace_m = ex.StackTrace;
}
[DataMemberAttribute]
public string Message
{
get { return this.strMessage_m; }
set { this.strMessage_m = value; }
}
[DataMemberAttribute]
public string StackTrace
{
get { return this.strStackTrace_m; }
set …Run Code Online (Sandbox Code Playgroud) 例如,假设您有一个浮点数列表,它大约是常见数量的倍数
2.468,3.700,6.1699
这大约是1.234的倍数.您如何描述这种"近似gcd",您将如何进行计算或估算呢?
与我对这个问题的回答密切相关.
language-agnostic algorithm math floating-point greatest-common-divisor
我可以从类构造函数中将"this"作为指针传递给函数,并在构造函数返回之前使用它指向对象的成员吗?
这样做是否安全,只要在函数调用之前正确初始化被访问的成员?
举个例子:
#include <iostream>
class Stuff
{
public:
static void print_number(void *param)
{
std::cout << reinterpret_cast<Stuff*>(param)->number;
}
int number;
Stuff(int number_)
: number(number_)
{
print_number(this);
}
};
void main() {
Stuff stuff(12345);
}Run Code Online (Sandbox Code Playgroud)
我认为这不起作用,但似乎.这种标准行为,还是仅仅是未定义的行为?
我有一个库,我想将它从旧系统迁移到新的优化系统.
旧库是使用MS Access(mdb文件)构建的,其中每本书本身就是一个文件.每本书由两个表组成,一个用于章节标题,第二个用于内容.还有一个mdb文件,其中包含所有书籍名称,每本书的页码,作者姓名和其他常规信息.
新的系统数据库引擎是MySQL,因此我有三种(可能)存储书籍的可能性:1-将所有书籍章节标题存储在一个表格中,将所有书籍内容存储在另一个巨大的表格中.2-将所有书籍章节标题存储在一个表格中,将每本书籍的内容存储在本书的表格中.(所以,如果我有5本书,我将获得1个章节标题和5个内容).3-将它们存储为旧系统的设计,每本书有两个表,一个用于章节标题,第二个用于它的内容.
我不喜欢使用多个数据库,一个数据库可以完美地完成作为wordpress.com托管的博客(yap,他们有庞大的数据库,当然他们使用其他技术,但我说的是数据库系统架构) .
该图书馆藏书超过500本,而且这个数字正在增加.
你怎么看?
我用Ruby写了一个脚本.我想在某个时间每天运行它.你是如何在Windows XP系统上那样做的?
我在机器上四处寻找并发现了"计划任务"控制面板,但它似乎与运行脚本没有任何关系,据我所知,"向导"提供的选项.
我需要从32位WOW进程获取本机(而不是WOW)程序文件目录的路径.
当我将CSIDL_PROGRAM_FILES(或CSIDL_PROGRAM_FILESX86)传递给SHGetSpecialFolderPath时,它返回WOW(Program Files(x86))文件夹路径.
如果可能的话,我宁愿避免使用环境变量.
我想比较一下我从注册表中读取的一些值,如果值指向我的应用程序的WOW或本机版本的路径,那么我的代码会执行某些操作,否则它会执行其他操作.要弄清楚我的应用程序的原生和WOW版本应该在哪里,我需要获得"Program Files(x86)"和"Program Files"的路径.
.net ×2
c# ×2
c++ ×2
windows ×2
64-bit ×1
algorithm ×1
architecture ×1
constructor ×1
cron ×1
database ×1
exception ×1
if-statement ×1
java ×1
math ×1
performance ×1
r ×1
ruby ×1
this ×1
vector ×1
wcf ×1
web-services ×1
windows-xp ×1
wpf ×1