好吧,过去三天我一直坐在探查器结果面前,通过自动化套件运行各种各样的测试用例.我们的想法是看看是否有任何良好的优化通常可以提高性能.我有资格不错在这方面如下:
在最终用户级别具有非常重要和可观察的性能改进潜力,例如在表现不佳的领域中提高> 100%.
是否有可能减少核心空间使用,例如在数据繁重区域减少> 50%.
易于实现,对代码的混淆最少,副作用最小.即实施优化的好处大大超过了成本.
该应用程序是一个3D映射和建模包,在界面中有大量图形,后端有几何处理.我已经为确保大多数处理的最佳算法选择做了很多工作,而且在这个阶段我正在寻找任何通用的简单方法来处理大型和复杂的数据集时获得额外的优势.到目前为止,我已经提出以下建议;
搜索时,请保留最近找到的项目的缓冲区并首先检查.通过重复搜索进行的大量处理似乎在同一区域内进行搜索.从答案到现在,这似乎是一种特定的记忆形式
排序时,检查数据是否已按排序顺序排列(特别是在使用qsort的位置)
将GUI和处理保持在单独的线程中(失败是易于实现的良好标准,但IMO仍然值得)
如果你有本地类变量,它具有重要的构造/破坏时间,在使用频繁的成员函数中,使它们成为私有类成员.尤其是动态数组和字符串,尤其是MFC CArrays和CStrings.
使用动态数组时,将初始大小设置为略微超过典型使用量,并采用指数增长策略.
处理要存储在数组中的非常大的数据集时,首先调整数据大小以避免任何重新分配.
避免在堆栈上创建临时对象副本的函数返回,而是使用引用参数,例如
CString MyFunc(双x,双y)
效率低于
void MyFunc(double x, double y, CString &Result)
Run Code Online (Sandbox Code Playgroud)
实际上,避免CStrings和大多数MFC在代码的任何性能关键区域.(编辑:这可能更常被RVO否定,但不适用于我的应用中的CStrings)
这些项似乎在我的上下文中运行良好,但有没有明显的我遗漏的,或者还有其他优秀的资源优化?
编辑: 根据提供的许多评论,显然需要进一步解释.虽然我完全意识到建议对特定代码片段进行特定优化需要查看该代码,但过去几天花在分析分析器输出上已经显示出优化候选者方面的某些模式.我也意识到自己对其他人在这个领域做得很好的事情的无知,并且看到这些技术的列举清单(至少对我而言),无论它们是否适用于我的情况.这个问题不是关于优化的危险,但对于那里的任何初学者,我建议你首先建立一个强烈的需求,在首先考虑之前优化需求.我自己的偏好是根据未来的性能要求在设计阶段进行大多数优化,但我也是分析的强力倡导者,以验证在实施中是否满足设计假设.我会请人们取悦他们自己积极优化的经验,而不是他们是否应该首先考虑优化.
FWIW,编译器优化代码与否之间的区别在于我的自动化套件中的12%,这是最终用户级别的边界可观察.
第二次编辑:我发现一些相关的帖子非常有用,特别是Mike Dunlavey关于过度依赖于profiler输出的评论.
我想在Postgres表中有一个列,它将存储连接到数据库的用户的远程IP地址.我正在考虑使用某种默认约束的数据类型"inet".有任何想法吗?
谢谢.
是否有Google Image Search API会以XML格式返回数据?
我知道AJAX API:
http://code.google.com/apis/ajaxsearch/documentation/
我正在寻找的是一种在我自己的UI中解析和显示来自Google图片搜索查询的图像的方法.
我可以尝试从以下搜索中解析HTML结果:
http://images.google.com/images?q=apple
但无法保证HTML格式不会改变.
是否有相同的官方非AJAX API(如图书搜索API)?
我不太清楚如何设计所以我在Silverlight + MVVM应用程序的组合根目录中保留对DI容器的引用.
我有以下简单的使用场景:主视图(可能是项目列表)和打开一个项目的编辑视图的操作.因此,主视图必须在用户执行操作时创建并显示编辑视图(例如,单击某个按钮).
为此,我有以下代码:
public interface IView
{
IViewModel ViewModel {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
然后,对于我需要能够创建的每个视图,我都有一个抽象工厂,就像这样
public interface ISomeViewFactory
{
IView CreateView();
}
Run Code Online (Sandbox Code Playgroud)
然后将此工厂声明为"父"视图模型的依赖项,如下所示:
public class SomeParentViewModel
{
public SomeParentViewModel(ISomeViewFactory viewFactory)
{
// store it
}
private void OnSomeUserAction()
{
IView view = viewFactory.CreateView();
dialogService.ShowDialog(view);
}
}
Run Code Online (Sandbox Code Playgroud)
所以一切都很好,直到这里,没有DI容器在视线:).现在来了ISomeViewFactory的实现:
public class SomeViewFactory : ISomeViewFactory
{
public IView CreateView()
{
IView view = new SomeView();
view.ViewModel = ????
}
}
Run Code Online (Sandbox Code Playgroud)
"????" 部分是我的问题,因为视图的视图模型需要从DI容器中解析,因此它会注入其依赖项.我不知道的是,除了组合根之外,如果没有对DI容器的依赖,我怎么能做到这一点.
一种可能的解决方案是对注入工厂的视图模型具有依赖性,如下所示:
public class SomeViewFactory : ISomeViewFactory
{
public SomeViewFactory(ISomeViewModel viewModel)
{ …Run Code Online (Sandbox Code Playgroud) c# silverlight dependency-injection inversion-of-control mvvm
我希望在提出一些反对解决方案的提示后,因为这是家庭作业,我想自己解决
我首先是C的新手.事实上我之前从未做过任何事情,尽管我以前从大学的模块有过java经验.
我正在尝试编写一个将单个整数转换为二进制的程序.我只允许使用按位操作而不使用库函数
任何人都可以提出一些关于我将如何做这件事的想法.显然,我不想要代码或任何东西,只是一些想法,如何探索当前我有点困惑,没有攻击计划.好吧,让它很困惑:D
非常感谢
更新:更好地解决问题.
我试图以XOR神经网络为例来理解反向传播算法.对于这种情况,有2个输入神经元+ 1个偏置,隐藏层中的2个神经元+ 1个偏置,以及1个输出神经元.
A B A XOR B
1 1 -1
1 -1 1
-1 1 1
-1 -1 -1
Run Code Online (Sandbox Code Playgroud)

我正在使用随机反向传播.
在阅读了一点之后我发现输出单元的错误传播到隐藏层...最初这是令人困惑的,因为当你到达神经网络的输入层时,每个神经元都会得到一个错误调整来自隐藏层中的两个神经元.特别是,首先很难掌握错误的分配方式.
步骤1计算每个输入实例的输出.
步骤2计算输出神经元(在我们的例子中只有一个)和目标值(s)之间的误差:
步骤2 http://pandamatak.com/people/anand/771/html/img342.gif
步骤3我们使用步骤2中的错误计算每个隐藏单元的错误h:
步骤3 http://pandamatak.com/people/anand/771/html/img343.gif
"权重kh"是隐藏单元h和输出单元k之间的权重,这是令人困惑的,因为输入单元没有与输出单元相关联的直接权重.在盯着公式几个小时后,我开始思考求和意味着什么,并且我开始得出结论,连接到隐藏层神经元的每个输入神经元的权重乘以输出误差并总结.这是一个合乎逻辑的结论,但公式似乎有点令人困惑,因为它清楚地说明了'权重kh'(在输出层k和隐藏层h之间).
我在这里正确理解了一切吗?任何人都可以证实吗?
什么是输入层的O(h)?我的理解是每个输入节点有两个输出:一个进入隐藏层的第一个节点,另一个进入第二个节点隐藏层.应该将两个输出中的哪一个插入O(h)*(1 - O(h))公式的一部分?
第3步http://pandamatak.com/people/anand/771/html/img343.gif
computer-science machine-learning backpropagation neural-network
我的身份验证过滤器出了问题.当过滤器重定向到登录页面时,登录JSP中不会显示任何图像.但是,如果我在登录后手动进入登录页面,则会显示图像.
我不明白为什么会这样!我感谢任何帮助.:-)
AuthFilter筛选:
if (authorized == null && path.indexOf("Auth") == -1 && path.indexOf("Login") == -1 ) {
httpResponse.sendRedirect("Login");
return;
} else {
chain.doFilter(request, response);
}
Run Code Online (Sandbox Code Playgroud)
登录servlet:
// Just using a servlet in case I want more data sent to the jsp
Dispatcher.dispatch("views/login.jsp", request, response);
Run Code Online (Sandbox Code Playgroud)
login.jsp的:
<img src="images/logo.png" />
Run Code Online (Sandbox Code Playgroud)
jsp在其他方面是"正常的",所有必需的HTML标记都存在."images"文件夹位于项目的默认"web"文件夹中,与所有其他jsp和javascripts一起.
在此先感谢您的帮助.:)
- Stian
将现有的基于Vb6.0 win的应用程序转换为基于ac#win的最快方法是什么?
c# ×2
java ×2
binary ×1
c ×1
c++ ×1
ip-address ×1
mvvm ×1
mysql ×1
mysqli ×1
optimization ×1
pdo ×1
php ×1
postgresql ×1
servlets ×1
silverlight ×1