相关疑难解决方法(0)

我应该为每个Paint请求创建新的Pens/Brushes还是在整个应用程序生命周期中保留它们?

我有一个应用程序做了很多绘图,让我们假装它是一个类似Viso的应用程序.它有一些对象,它们有多个绘制的子对象,可以连接的东西,调整大小等等.目前,当我在特定的子对象或对象上调用paint时,我会执行以下操作:

using(var pen = new Pen(this.ForeColor))
{
    // Paint for this object.
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了相互矛盾的答案,这应该针对一个不断绘制相同内容的应用程序(可能只是重新调整大小,移动等)来完成.我应该Pen/Brush将对象存储在对象中,然后在处理应用程序时将它们全部丢弃,或者它们是否足够高效以便为每次绘制调用创建/处理(记住这是一个非常图形密集的应用程序).

编辑:已经有两个答案有相互矛盾的答案,这是我不确定要切换的地方.有没有人对这些差异有任何统计数据?

.net c# gdi+ winforms

16
推荐指数
1
解决办法
4326
查看次数

为什么我的string.indexof(char)更快?

不要问我是怎么到达那里的,但是我正在玩一些屏蔽,循环展开等.无论如何,出于兴趣,我正在考虑如何实现indexof方法,长话短说,所有掩盖等除此之外,这个天真的实现:

public static unsafe int IndexOf16(string s, int startIndex, char c) {
            if (startIndex < 0 || startIndex >= s.Length) throw new ArgumentOutOfRangeException("startIndex");
            fixed (char* cs = s) {
                for (int i = startIndex; i < s.Length; i++) {
                    if ((cs[i]) == c) return i;
                }
                return -1;
            }
        }
Run Code Online (Sandbox Code Playgroud)

比string.IndexOf(char)快.我写了一些简单的测试,它似乎完全匹配输出.我的机器的一些样品输出数字(当然会有所不同,但趋势很明显):

short haystack 500k runs
1741 ms for IndexOf16
2737 ms for IndexOf32
2963 ms for IndexOf64
2337 ms for string.IndexOf <-- buildin

longer haystack:
2888 ms for IndexOf16
3028 …
Run Code Online (Sandbox Code Playgroud)

c# string performance

16
推荐指数
1
解决办法
1449
查看次数

大数组,std :: vector和堆栈溢出

我有一个从大型数组中读取数据的程序,我最初在Visual Studio中将程序划分为两个独立的项目,每个项目分别工作正常,但是当我尝试将它们组合在一起时,程序在调试时滑动了一些步骤.我对C++很新,所以我开始做一些研究,我发现也许我正在用那些巨大的数组填充堆栈,我应该尝试将它们放在堆上.

我决定更改每个数组std::vector并以这种方式初始化它们:

std::vector<double> meanTimeAO = { 0.4437, 0.441, 0.44206, 0.44632, 0.4508, 0.45425,...}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译编译器崩溃堆栈溢出后现在更改所有数组后,我以为我通过将数组更改为向量来释放堆栈中的内存空间但是看起来我有相反的结果,为什么呢??

我该如何处理这些大数组呢?(它们是固定不变的值或大小)

c++ arrays stack vector c++11

16
推荐指数
2
解决办法
2769
查看次数

创建C++对象

我注意到有两种方法可以创建C++对象:

BTree *btree = new BTree;
Run Code Online (Sandbox Code Playgroud)

BTree btree;
Run Code Online (Sandbox Code Playgroud)

据我所知,唯一的区别在于如何访问类对象(.与 - >运算符),并且当使用第一种方式时,私有整数被初始化为0.

哪种方式更好,有什么区别?

你怎么知道何时使用其中一个?

c++ g++ class object

14
推荐指数
3
解决办法
2万
查看次数

C中的malloc()有哪些有用的例子?

我只是malloc()在C 读书.

维基百科文章提供了一个例子,但它甫一为10个整数与比较阵列分配足够的内存int array[10].不是很有用.

你什么时候决定用malloc()C来处理你的记忆?

c malloc

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

退出方法时堆栈会发生什么?

我在读什么,堆栈和堆在哪里?.我有点模糊的一件事是在方法退出后堆栈会发生什么.以此图片为例:

堆

退出方法后清除堆栈,但这意味着什么?堆栈上的指针是否刚刚移回堆栈的开头使其变空?我希望这不是一个太宽泛的问题.当从退出方法中清除堆栈时,我不确定幕后发生了什么.

java stack

14
推荐指数
1
解决办法
2048
查看次数

堆栈和堆在c#

可能重复:
堆栈和堆的内容和位置

堆和堆栈之间的C#有所不同.我刚刚意识到我一直认为堆栈是RAM而堆是硬盘.但现在我不确定它是否正确.如果不是,那么如果将它们存储在一个地方有什么区别?

c# heap stack

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

编译和解释有什么区别?

我刚与一位同事进行了对话,并谈论了V8 JavaScript引擎.根据维基百科,

V8在执行之前将JavaScript编译为本机机器代码,而不是更传统的技术,例如解释字节码或将整个程序编译为机器代码并从文件系统执行.

where(纠正我,如果我错了)" 解释字节码 "是Java的工作方式," 编译整个程序 "将适用于C或C++等语言.现在我们想知道,辩论并提出关于差异,相似性的错误断言和推定.为了结束这一点,我建议询问SO专家.

那么,谁能够

  1. 命名,解释和/或引用所有主要方法(例如预编译与运行时解释)
  2. 可视化或提供关于来源,汇编和解释之间关系的方案
  3. 为#1的主要方法提供示例(名称编程语言).

笔记:

  • 我不是在寻找关于不同范式的长篇文章,而是一个视觉上支持的快速概述.
  • 我知道Stackoverflow并不打算成为程序员的百科全书(而是针对更具体问题的Q&A平台).但是既然我可以找到很多流行的问题,那种提供某些主题的百科全书式的观点(例如[1],[2],[3],[4],[5]),我就开始提出这个问题.
  • 如果这个问题更适合任何其他StackExchange网站(例如,cstheory),请告诉我或标记这个问题以便审核.

compiler-construction interpreter compilation interpretation

13
推荐指数
1
解决办法
5263
查看次数

为什么有堆栈和堆?

汇编语言为什么同时使用堆栈和堆?他们似乎多余.

memory heap stack allocation

12
推荐指数
1
解决办法
1584
查看次数

C# - 垃圾收集

好的,所以我理解堆栈和堆(堆栈上的值,堆上的引用).

当我声明一个类的新实例时,它会存在于堆上,并在堆栈的内存中引用此点.我也知道C#是自己的垃圾收集(即它确定何时不再使用实例化的类并回收内存).

我有两个问题:

  1. 我对垃圾收集的理解是否正确?
  2. 我可以自己做吗?如果是这样,我自己做这件事有什么好处,或者我应该离开它.

我问,因为我在For循环中有一个方法.每次循环时,我都会创建一个新类的实例.在我的脑海中,我把所有这些课程都放在一堆,没有做任何事情,只是占用记忆,我想尽快摆脱它们以保持整洁!

我是正确理解这个还是我错过了什么?

c# heap stack

12
推荐指数
3
解决办法
2万
查看次数