|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2014/9/25 15:23:24 |
标题: |
|
加入我的收藏 |
楼主: |
TObj1 = class private F_i: Integer; f_d: TDateTime; f_s: string; public property field_s: string read f_s write f_s; property field_i: Integer read F_i write F_i; property field_d: TDateTime read f_d write f_d; end;
procedure TForm81.SpeedButton19Click(Sender: TObject); var Foo: TObj1; i: Integer; d1, d2: TDateTime; tmp: string; begin d1 := now; for I := 1 to 1000 do begin Foo := TObj1.Create; try Foo.field_s := 'Hello World'; Foo.field_i := 42; Foo.field_d := now; tmp := TJson.ObjectToJsonString(Foo); finally Foo.Free; end; end; d2 := now; Writeln(tmp); writeln(FormatDateTime('ss.zzz', d2 - d1));
Foo := TJson.JsonToObject<TObj1 > (tmp); try writeln(Foo.field_s); writeln(Foo.field_i.ToString); writeln(FormatDateTime('yyyy-mm-dd hh.nn.ss', Foo.field_d)); finally Foo.Free; end; end;
一千条好几秒,这样的东西是用不上服务器端的,服务器上解析每秒10万次都嫌慢,不过这样也有好处,能等级化开发队伍
----------------------------------------------
- |
作者: |
|
2014/9/25 16:29:40 |
1楼: |
它是用RTTI的,如果是你自己的类,你知道有哪些属性.直接写json应该会快一些吧. 你可以试试
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2014/9/25 16:39:47 |
2楼: |
谢谢老大。我这几天有空,对比了下java/net的系列化,有感而发吧了,感觉emb什么都有,但实用性还差还几公里
----------------------------------------------
-
|
作者: |
msfm (清洁工) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2014/9/25 17:18:51 |
3楼: |
不明觉厉
----------------------------------------------
-
|
作者: |
drroc (mvcxe) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2014/9/26 11:29:07 |
4楼: |
楼主测一下superobject的效率
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/
|
作者: |
|
2014/9/26 11:33:42 |
5楼: |
QJson.FromRtti
----------------------------------------------
QDAC 开源数据库访问组件欢迎大家关注讨论和使用 官网(博客):http://www.qdac.cc 讨论QQ群:250530692 QLang 多语言组件快速让你的程序走向海外
|
作者: |
|
2014/9/26 12:27:44 |
6楼: |
superobject的效率约QJson的一半不到,但用开了superobject,就接受其低效
----------------------------------------------
-
|
作者: |
|
2014/9/26 17:35:46 |
7楼: |
纯算法的东西在这里PK,似乎有点儿无聊。
----------------------------------------------
-我爱Delphi6
|
作者: |
|
2014/9/26 17:55:32 |
8楼: |
怎么会无聊?我想既然xe7带了系列化,就相信它,但实际每秒系列化不到1千条,这就垃圾级了,我的期望是每秒100万,但测了好几个封装,都20万以下,但勉强用吧,至于1千,那是粗糙的模型
----------------------------------------------
-
|
作者: |
|
2014/9/26 19:24:41 |
9楼: |
一条1K 每秒100万 哪是1000000K 每秒就要处理1G的数据 要大型机了
----------------------------------------------
我为人人为我
|
作者: |
|
2014/9/26 19:49:23 |
10楼: |
也许我没写清楚,但也没有提到1k一条,我所说的是xe7自带的TJson.ObjectToJsonString非常慢,几个字段,一秒序列化不到一千条。做为服务器的通信的基础构件,我期望是每秒100万条级,我测了下大多json约20万,QJson和dwjson都非常快,其他好几个都慢
----------------------------------------------
-
|
作者: |
drroc (mvcxe) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2014/9/26 21:51:29 |
11楼: |
想不花钱,不出力,就有百万级的性能,哪有这么好的事?
就算是程序员最多的java界,也要阿里这样体量的公司才能搞出个百万级的json库fastjson
至于delphi自带的,大部份都是桌面级的,稳定好用就行了,有特别需求自己写,不然怎么体现你程序员的价值呢?
----------------------------------------------
MVCXE中国首个DELPHI MVC WEB框架:https://www.mvcxe.com/
|
作者: |
|
2014/9/26 22:01:24 |
12楼: |
我买过两个delphi版,但后面的版真买不下手,bug太多, 每版都试一下,看看能否可靠些。至于json的问题QJson速度已经弄的很好了,但xe7自带的真太慢了,一秒不到1千条,在我看来这不好想象,随便一个开源都每秒10万。此外dataSnap也很一般,按我看来也就模型级别
----------------------------------------------
-
|
作者: |
|
2014/9/28 21:39:01 |
13楼: |
呵呵,以后想当长一段时间,Delphi的东西只会以最慢,最臃肿的形式呈现。 能实现出来,没BUG已经是谢天谢地了。
贴一段XE6中的新代码: constructor TBitmapSurface.Create(); begin inherited;
FBits := nil; FPitch := 0; FWidth := 0; FHeight := 0; FPixelFormat := TPixelFormat.None; FBytesPerPixel := 0; end;
好NB的初始化,几乎用过几年的Delphi程序员都知道,Delphi对象默认成员全部清0。但维护FMX的EMB的技术大神们不知道这个显而易见的事实。BUG我已经在QC中提交了。这么容易修改的东西,只需要将整个函数删除,效率就可以提升。但目前仍然是Open状态。
在EMB,没人关心效率。那个不能忽悠人,没噱头。这是现实。
----------------------------------------------
-
|
作者: |
|
2014/9/28 22:00:12 |
14楼: |
DelphiXE7:
1.随便建立一个VCL程序 2.加入64-bit windows 的Target platform 3.切换到Release 4.打开Release configuration - 64-bit Windows platform的Debug Information 5.设置断点,并调试,断点无效
DelphiXE2 - DelphiXE6 同样的操作是可以调试的。 甚至于在DelphiXE7的32bit Release中也是可以调试的,仅64bit Release不行
有这样的BUG,我可以接受,不能接受的是,当我在QC中提交这个Bug时, 得到的答复竟然是 Test Case Error.
----------------------------------------------
-
|
作者: |
|
2014/9/28 22:09:56 |
15楼: |
delphi目前就是这样啊, 如果开始新项目,对企业的还好,对个人用户的,老老实实用各个平台自己的解决方案吧,否则又大又慢,没有竞争力的。
----------------------------------------------
-
|
作者: |
wzca (wzca) |
★☆☆☆☆ |
-
|
普通会员 |
|
2014/9/29 9:01:19 |
16楼: |
@zwjchinazwj (蒲石)
Release 模试还能调试? 想调试为啥不用Debug模式呢,这不用专门用来调试的吗
----------------------------------------------
-
|
作者: |
|
2014/9/29 12:15:27 |
17楼: |
@wzca
Release模式为什么不能调试?你看看哪个编译器Release不能调试。只要有调试符号信息,就可以调试,与Debug Release毫无关系。
Release有可能开启编译优化,生成的opcode与Debug可能差别甚大。Debug不出问题的程序,放在Release下,就出问题,你不调试,如何确定问题??
而且我还明确的告诉你,同样的代码在Delphi下不止1种情况下Release Debug会产生不一样的结果。
最后,无论你是用Delphi几,除了XE7以外,只要在工程选项中包含调试信心,无论Debug和Release,都可以调试。你回去试试你的Delphi7看看。
----------------------------------------------
-
|
作者: |
|
2014/9/29 12:32:51 |
18楼: |
请教楼上zwjchinazwj,我还停在32位,Delphi64位真比32优秀?我的感觉64我用不上,执行且慢。32位程序能用在32及64位的操作系统上,编译后一个程序就通用(xp/win7-32/win7-64/win2003-2008等),发布容易,反之则不行。但我没比较过64位操作系统上执行Delphi编译成32程序与64的程序性能差别
----------------------------------------------
-
|
作者: |
|
2014/9/29 13:08:44 |
19楼: |
在服务器程序方面,32bit程序内存有2GB的限制,即使使用PEFlag,也只能到3G
64位程序则基本没有内存使用的限制。,至于性能,64bit到未必比32bit快。现在还只盯着客户端程序,那是要走向穷途末路。
----------------------------------------------
-
|
作者: |
|
2014/9/30 20:45:07 |
20楼: |
to zwjchinazwj (蒲石) 64位调试那个我记得好像是可以调试的,但是似乎64位有个问题,切换平台或者编译选项,它认为代码没变,不会重新编译,而是使用原来的DCU. clean一下,再编译
----------------------------------------------
武稀松http://www.raysoftware.cn
|
作者: |
|
2014/9/30 23:24:39 |
21楼: |
to wr960204 (武稀松) 我还不至于不检查一下是否clear了。我跟踪这个问题,每次都会clear的。
另外,64bit release是可以调试,需要选择 Limit Debug Information就可以调试,选择Debug Information反而不行。从命令的编译指令看 前者使用了 -$D1 后者使用了-$D0,这个-$D,dcc64.exe的帮助中没有说明具体有什么用。
我认为是IDE的问题,原来compiler选项中,是选择有或者没有调试信息,XE7中改成了下拉选择。 我认为就是这个改动导致改出毛病来了。
----------------------------------------------
-
|
作者: |
|
2017/11/18 10:16:13 |
22楼: |
刚用D10.2测试楼主的代码,垃圾电脑 i5-3470,1秒5万条。
用D10.2 最新的 System.Json.Serializers.TJsonSerializer 测试,1 秒10万了。
还是进步很大的。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
|
|