小编dth*_*rpe的帖子

为什么画一条小于1.5像素的线的速度是画一条10像素厚的线的两倍?

我正在玩FireMonkey,看看图形绘画是否比GDI或Graphics32(我目前选择的库)更快.

为了看它有多快,我已经进行了一些测试,但我遇到了一些奇怪的行为:

与较粗的线条相比,绘制细线(<1.5像素宽)似乎非常慢: 性能

  • 垂直轴:cpu刻度绘制1000行
  • 横轴:线条刻度*

结果非常稳定; 一旦线宽超过1个像素宽,绘图总是变得更快.

在其他库中,似乎有单行快速算法,粗线较慢,因为首先创建了多边形,所以为什么FireMonkey反过来呢?

我主要需要单像素线,所以我应该以不同的方式画线?

测试使用以下代码运行:

// draw random lines, and copy result to clipboard, to paste in excel
procedure TForm5.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
var
  i,iWidth:Integer;
  p1,p2: TPointF;
  sw:TStopWatch;
const
  cLineCount=1000;
begin
  Memo1.Lines.Clear;
  // draw 1000 different widths, from tickness 0.01 to 10
  for iWidth := 1 to 1000 do
  begin
    Caption := IntToStr(iWidth);
    Canvas.BeginScene;
    Canvas.Clear(claLightgray);
    Canvas.Stroke.Kind := TBrushKind.bkSolid;
    Canvas.Stroke.Color := $55000000;
    Canvas.StrokeThickness :=iWidth/100;
    sw := sw.StartNew;
    // draw 1000 random lines
    for I := …
Run Code Online (Sandbox Code Playgroud)

delphi graphics performance line firemonkey

32
推荐指数
2
解决办法
4321
查看次数

如何在Delphi中使用变量数组

我有两个Delphi7程序:一个COM自动化服务器(EXE)和另一个使用自动化服务器的程序.

我需要从一个程序传递一个字节数组到另一个程序.

经过一番搜索,我发现使用变体数组是可行的方法(如果你知道更好的方法,请纠正我).

我的问题是:如何在一个程序中创建变量数组,然后如何在另一个程序中读取它的值?

我知道VarArrayCreate和VarArrayLowBound/VarArrayHighBound,但我不确定如何正确地做到这一点.

谢谢!

arrays delphi automation delphi-7 variant

19
推荐指数
2
解决办法
4万
查看次数

用于获取启动路径,应用程序数据路径等的WPF等效于"System.Windows.Forms.Application.X"是什么?

我正在将Windows窗体应用程序转换为WPF应用程序.有没有办法获取诸如启动路径,用户应用程序数据路径,通用应用程序数据路径等,而无需引用System.Windows.Forms?

以前,我用过System.Windows.Forms.Application.StartupPath,但System.Windows.Application.Current对象不包含相同的信息.

c# wpf

17
推荐指数
2
解决办法
9149
查看次数

如何在Entity Frameworks 4.0模型中指定SQL Server XML数据类型?

我正在使用Model-First模式中的Entity Frameworks 4.0(CT​​P5)构建ORM.我的一些实体具有复杂(对象树)属性,不需要是ORM实体 - 它们只对使用此数据库的后端服务器系统感兴趣,而不是对使用此数据库的客户端感兴趣.

我可以将属性的对象树序列化为字符串并将其作为字符串存储在DB中,但SQL Server XML数据类型确实很吸引人.能够以智能方式查询XML数据内容将是非常好的.

但是,我没有看到任何方法在Visual Studio实体建模器中指定我想要XML数据类型.

是完成此操作以在模型中指定字符串字段,发出DDL,然后修改DDL以将字符串字段更改为XML字段的唯一方法吗?这似乎非常脆弱,只写一次,永远不会改变.有没有更好的办法?

.net xml entity-framework entity-framework-4

10
推荐指数
1
解决办法
7955
查看次数

XACML 3.0与XACML 2.0有何不同?

我正在考虑将我的客户端应用程序从使用XACML 2.0授权服务迁移到使用更新的XACML 3.0服务.

在将客户端应用程序从生成XACML 2.0请求迁移到发出XACML 3.0请求时,我会遇到哪些更改或问题?

xacml xacml2 xacml3

9
推荐指数
1
解决办法
3647
查看次数

如何为WCF REST C#站点设置oAuth身份验证

我正在从VS 2010在线模板中的WCF REST服务模板40(CS)创建一个站点.它工作得很好,但我需要保护它.

我需要支持Windows,Linux和iPhone应用程序,所以REST + oAuth似乎是一个很好的解决方案,但我不知道从哪里开始.

基本上我需要像传统的表单auth一样将用户名/密码(当然是哈希)解析到我的数据库.

rest wcf oauth

8
推荐指数
1
解决办法
7246
查看次数

如何减少在GC中花费的时间

我正在创建一个桌面应用程序,它具有可能运行几秒钟的计算量大的操作.显然,需要最小化该操作的时间.该操作相当容易并行(单个子任务),每个子任务在单个线程上大约需要50ms.在多个线程上,每个子任务需要4-5倍的时间,因为在GC中花费了40-50%的时间,从而有效地完全取消了加速.

所以我需要减少GC的工作量.我的第一个想法是试图找到哪种类型的对象被垃圾收集最多,但我意识到虽然我经常进行内存分析,但我从未搜索过这样的模式.通常查看堆快照或堆快照之间的差异,但这些显示活动的对象,而不是在这些快照之间创建和处置的对象.所以这是我的第一个问题:什么是最简单的方法来查找创建哪些类型和垃圾收集最多?我试图寻找方法调用计数来查看是否经常怀疑某些构造函数,但是以百万计数创建的所有对象都只是小结构类型.如果我理解正确的话,这些应该对GC没有影响,即使是盒装?

该算法创建了数十万个单独的结果点对象.这些当然不应该是gc'd,因为它们代表了操作的输出.但它引出了我的第二个问题:在GC中花费的时间主要取决于对象的总数,还是主要取决于实际收集的对象数量?我应该尝试限制结果对象的数量,而是使用更少但更大的结果对象吗?

编辑:我通过使用VS 2010并发可视化工具找到了在GC中花费的时间.此外,在并行代码段中,阻塞线程的大多数部分都在等待gc

编辑:我应该澄清性能问题是因为执行在工作站GC上有效序列化.例如,请参阅本文中描述的性能问题.

http://blogs.msdn.com/b/hshafi/archive/2010/06/17/case-study-parallelism-and-memory-usage-vs2010-tools-to-the-rescue.aspx

我无法阻止垃圾收集器阻塞我的线程(我不认为我想要桌面应用程序的服务器GC,对吗?).因此,为了获得此操作的线性加速,我需要减少调用GC的次数.浪费的大部分时间实际上被其他线程阻塞,等待一个线程执行GC.

.net performance garbage-collection

8
推荐指数
1
解决办法
1395
查看次数

emacs中有多个"Occur"结果缓冲区?

是否有一个包允许我为同一个缓冲区提供多个Occur结果缓冲区(如grep-a-lot:http://www.emacswiki.org/emacs/grep-a-lot.el).

在分析多个关键字的日志文件时,我遇到了这个问题(比如查看不同但相关的线程在做什么).

emacs

7
推荐指数
1
解决办法
798
查看次数

将常量从vb转换为c#

在VB.Net中有一堆常量如vbTab,C#中是否有对应的常量?

.net c# vb.net

6
推荐指数
1
解决办法
7558
查看次数

为什么可以使用反射从已签名的程序集中加载未签名的程序集中的类型?

我有两个组件A和B. A是强名称而B不是.

根据MSDN,我不能从A引用B,因为强名称程序集只能引用另一个强名称程序集.

但是为什么可以加载程序集B,实例化它的类并使用反射从程序集A调用它们的方法?

// Inside assembly A
Assembly b = Assembly.LoadFrom("B");
obj myObj = b.CreateInstance("MyClass");
Run Code Online (Sandbox Code Playgroud)

这是否会破坏不允许在签名组中引用未签名组件的目的?

.net reflection strongname assemblies

6
推荐指数
1
解决办法
1847
查看次数