Foxtable(狐表)用户栏目专家坐堂 → 打开狐表项目的速度,以及动态生成表、动态绑定表的问题?


  共有45243人关注过本帖树形打印复制链接

主题:打开狐表项目的速度,以及动态生成表、动态绑定表的问题?

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
打开狐表项目的速度,以及动态生成表、动态绑定表的问题?  发帖心情 Post By:2009/9/3 10:46:00 [显示全部帖子]

  在FoxTable的帮助文件中,专门有"大容量数据的管理"一章,贺老师提供了数量据非常大时的加载方案.

  但经过我的测试,发现当一个项目中的表较多时,目前系统中的解决方案有明显缺陷。具体问题是,当一个项目中的表较多而且表结构较复杂时,即使我每个表都加载空表,打开项目时仍然非常慢!我的一个项目中有大概60个表,打开狐表需要20秒左右,但打开项目需要3分钟左右(所有表都加载空表)。打开项目的速度如何之慢,把我的用户快吓跑完了,即使没有吓跑的,使用起来也非常费劲,一般都是先双击狐表项目,然后泡一杯热茶或咖啡,等喝完了,项目也快启动完了。
     经过我的分析,估计是在打开项目时,即使每个表都打开空表,也要加载每个表的表结构、表事件等,所以当表较多时加载空表的速度也慢之又慢。我的建议是贺老师能否改进一下,在打开项目时,提供一个选项:不加载表结构、表事件(可能还有相关的其他东西)。然后,在项目中需要时,再加载这些表的表结构、表事件及相关东西。这样,可以,大大提高打开项目的速度,也不会影响项目中表的使用。
     希望贺老师能够重视此事!

    补充:虽然用SQLTable 似乎可以解决这个问题,可以在打开项目时不加载任何表,在窗口中再动态加载表。但有些情况下用SQlTable似乎也不太方便(用SQLTable时若表与表之间的计算关系复杂,需要在一个窗口中动态加载多个Table,再把这些Table隐藏起来,似乎也不太方便)。
[此贴子已经被作者于2009-9-7 9:20:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/3 11:02:00 [显示全部帖子]

以下是引用yangming在2009-9-3 10:49:00的发言:
能否在打开时有的表不加,在做到某项操作,需要哪个表再加载哪个表呢?

我也是这样意思。

几个月前,我一直建议在打开项目时允许不加载某个表,在需要时用代码动态加载某个表。贺老师当时一直说:打开项目时表A的加载条件为空=不加载表A,现在看来,这完全是两码事。


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/3 11:29:00 [显示全部帖子]

以下是引用yangming在2009-9-3 11:17:00的发言:

也许当时老版是这样的,现在新版又不一样了呢

当时贺老师一直那样解释,我就认为:动态加载表(不是加载表的数据)估计是不好实现,现在在新版本中,在窗口中动态加载表都已经实现了,在项目中动态加载表应该也是很容易实现的。


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/3 12:01:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-3 11:34:00的发言:
别说60个表,在电脑开60个网页,看看后果会怎样。



   就是啊,这就是狐表的问题所在!
   一个项目中有60个表并无什么不对,关键是在狐表中只要打开项目,立即加载这60个表,所以造成了这个问题(打开项目过慢甚至崩溃)。

     我们讨论的问题,就是一个项目中表较多时,不要一次加载这60个表,而是先不加载或者只加载部分表,等到需要时再加载表。
 
    如果按贺老师的意思,一个项目中的表最多有多少个合适?或者说表较多时不能用狐表设置项目?好像在一个复杂的项目中,有60个以上的表是很正常的。我看其他开发工具开发的软件,从来没有在打开项目时立即把所有的表都加载到内存中的。

[此贴子已经被作者于2009-9-3 12:02:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/3 12:17:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-3 11:29:00的发言:

个人电脑而已,就是没有关联,加载60个表也是一个很差劲的设计,怨不得foxtable的。

    就凭表多就说是一个很差劲的设计?贺老师是不是也有点太绝对了?我用过的几个财务软件,一个项目中都有几十个表,打开软件时只需要10秒以内。

    我认为只要对狐表稍作改进,允许在打开项目时不加载表,就可以解决这个问题。希望贺老师不要改变概念!


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/3 12:45:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-3 12:25:00的发言:
几百个表的系统都有, 但是不会都出现在界面中。
现在提供了SQLTable,也告诉你了动态绑定的方法,你慢慢想办法调整设计,没有万能的开发工具。
[此贴子已经被作者于2009-9-3 12:27:09编辑过]

    既然几百个表的系统都有,那贺老师就凭60多个表就说是差劲的设计,恐怕的确不妥吧?我认为表多表少是根据项目需要的。贺老师说得对,表多的时候,肯定不应该在打开项目时一次性加载在内存中。所以,我认为不是表多了就一定有问题,而是在打开项目时必须把所有表一次性加载,这样的大框架肯定存在问题,无法设计复杂的表比较多的项目!
    其实,正是SQLTable让我看到了动态加载表的希望,既然在窗口中就可以动态加载表并生成Table和DataTable,那么,在窗口以外用代码动态生成表,从理论上来讲应该是完全可行的。
    但是,在目前的系统中,用SQLTable动态加载表的方法虽也存在一些不便。当项目中的多个表之间的计算关系复杂的时候(即某一个表的事件会引用到其他的多个表),需要在一个窗口中同时增加多个SQLTable,由于窗口关闭时这些Table都不再存在,所以每次打开窗口时都要重复加载这多个表。虽然这样做解决了在打开项目时不加载表的问题,但却造成了系统中多次重复执行相同的任务(加载表),造成系统资源的极大浪费,既多占内存又影响运行速度。
    如果对系统稍作改进,允许在系统中(窗口以外)用代码动态加载表(与在窗口中动态加载表类似),那么,这些用代码加载的表就可以在多个窗口中引用,而且不管多少次打个窗口,都可以重复引用这些表。这样,既解决了打开项目时的不加载表的问题,又避免了系统资源的浪费,即可比较完美的解决这个问题。希望贺老师认真思考一下,是不是这个道理!

     另外,发现贺老师在最近一段时间回贴的时候,多次用到一句话:“没有万能的开发工具”,这话当然没有错,但是,在狐表推出的最初几个月中,贺老师从来没有说话这样的话。贺老师能开发出狐表这样好的系统,当然是国产软件的骄傲,但是,若没有这些狐友们提这样那样、稀奇古怪的建议,甚至提一些难缠的建议、用一些不中听的话话,狐表的功能绝不会发展到今天这么强大!所以,贺老师的这句话好像有点打击大家提建议的意思,没有万能的开发工具,难道我们就不提建议了,狐表的功能改进就到此为止了?如果答案是否定的,这句话还是少说为好。

[此贴子已经被作者于2009-9-3 12:50:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/3 15:32:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-3 13:14:00的发言:
你可以看看OuterTableBuilder,这样生成的DataTable不会丢失,可以动态绑定。

好像可以,我再认真试试!


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/4 23:08:00 [显示全部帖子]

以下是引用czy在2009-9-4 20:17:00的发言:
其实60个表并不存在问题,问题是每个表如果有n多窗口,每窗口有n多控件,打开项目时才费时。
60个内部表,不加载数据,文件中5个窗口,每窗口10个控件,我打开项目20秒。
   听老师这么一说,就更说明狐表的大框架存在严重问题了!    
    我的项目中有60个表,总共有大概60个窗口,每个窗口中的控件都有几十个,目前狐表启动后打开项目需要3分钟左右。如您所说,即使我把这60个表在打开项目时都不加载,但这60个窗口是客观存在的,那么,打开项目仍然会很慢?我用的其他软件中,几百个窗口的也很常见,打开项目也是10秒钟左右,从来没过见打开项目要3分钟以上的!表可以动态加载,难道窗口不可以动态加载?非要在打开项目时把所有的窗口都加载,就更让人不可理解了!
    如果CZY老师所说属实,那么狐表这样的机构,如果不彻底解决这个问题,怎么开发大一点的项目?究竟多少个窗口算多?

    关于动态加载表,经过认真分析,在目前的系统中动态加载表没有任何问题,但目前的问题是,对于动态加载的表,不能用代码动态加载任何事件!这是一大缺陷!直接影响着动态加载表的广泛应用!目前的系统只有SQLTable中动态加载的表可以设置事件,而且也是事先设置好各个事件代码。如果系统允许提前建立一段独立于任何表任何事件的代码,并给这段代码取一个名字,然后,允许用代码给某个表的某个事件动态引用某段代码(根据以前所命的名字),这样就比较方便了!不知这样的设想是不是很方便实现!

[此贴子已经被作者于2009-9-4 23:09:36编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/5 7:11:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-5 0:46:00的发言:
C版你的估计是没错的,因为cpayinyuan的系统应该不会是单纯的表,而是用60个主窗口代替了60个表,这样等于要开60个表加60个窗口,如果还有关联,不慢才怪。
[此贴子已经被作者于2009-9-5 0:51:36编辑过]

     
     贺老师,这次您的分析依然是完全错误的!我的项目中虽然有大概60个表,但只有一个主界面窗口是主窗口,除此之外没有再用一个主窗口代替表,我的项目中需使用表的地方全部使用DataList,而且,在项目中我只有大概10个关联(我接受了您的建议,能不用关联的地方尽量不用关联)。

 

    所以,既然贺老师的分析是错误的,所以,我对现在的现像就更不理解了。为什么C版的项目有60个表启动就很快,但我的项目有60个启动就非常慢,经过我分析,现在最大的区别只有三个:(1)我的项目中窗口比较多,事件代码也比较多(有表事件,也有窗口事件和系统事件);(2)我的表结构可能相对复杂一些(有些表的字段比较多)。(3)我用的外部数据源SQL server(但我是在局域网中登录,网速绝对没问题)。如果不是窗口事件的问题,那就请我们共同分析一下,为什么都是60个表启动速度差别这么大,到底是什么问题?

[此贴子已经被作者于2009-9-5 7:40:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/9/5 7:31:00 [显示全部帖子]

以下是引用狐狸爸爸在2009-9-5 0:05:00的发言:

关于性能:

60个表又如何,谁让你一次全部打开?
你在电脑同时开60个网页,会是什么样的结果?
尽用一些不切实际的东西讲性能,老实说,我看着有点恼火。

一个月前还有些许道理,今天讲完全是胡搅,因为现在根本就不存在所谓性能上的短板。

再好的工具,也要合理使用,才会有好的结果,我不是神,只是一个普通的凡人,我没有办法设计一个随便怎么折腾都能运转如飞的软件。
世界上也不存在这样的软件!!!
[此贴子已经被作者于2009-9-5 0:43:07编辑过]

      贺老师莫要生气,这次首先是C版可能估计有误,所以才导致了我不太恰当的评价。但现在狐表还是测试,你又没有详细告诉大家狐表的一些内部技术,我们只能凭经验去猜,猜错了希望您也不要介意!但我感觉您现在明显没有几个月前有耐心,一看到大家提的意见不正确,或者一看到谁说狐表的性能不好速度太慢,马上就有点生气!只有对狐表痴情的人才会提这么多意见的!对于不关心狐表的人,谁会天天泡在狐表论坛、瞑思苦想给您提建议!希望贺老师在以后不要对我有什么成见,尽管我提的意见比较多,有些言语也不当,但您可以查查这一年来我的所有贴子,好像我并没有误导狐表的发展,更没有阻碍狐表的发展!没有自吹的意思,说实话我的这么多建议都体现在狐表中我感到很荣幸!我不是喜欢胡觉蛮缠的人,我同样讲道理,不要因为有几次我提的不对就招反感了! 

    按照贺老师的说法,“谁让你一次全部打开”,那我就请教一下贺老师,在SQLTable出现之前,如果在打开项目时不一次全部打开,怎么建立表的事件代码(我的大部分表中都有事件代码)?如果有办法,请贺老师不吝赐教!如果没有,在当时的版本中我在打开项目时一次打开也只能说是没有办法的办法!不太明白究竟是狐表的系统结构问题,还是我没有学习好?
    贺老师说:“尽用一些一切实际的东西讲性能……”,我不太理解这句话什么意思。我现在评价的是实实在在的我正在使用的项目,启动时间等数据都是我实际运行的结果记录下来的。即使我设计思路不对,贺老师也可以指出来。即使我分析错了,我们也可以讨论,共同寻求解决问题的办法,共同分析究竟是我自己设计的问题,还是狐表本身存在问题,以利于更好的改进,难道这样不好吗?用户提建议无论对与错,对软件的发展都是只有好处没有坏处,我认为作为厂家都应该欢迎,不明白贺老师究竟恼火什么。
    贺老师后面的话就更让人不太明白了,“因为现在根本就不存在所谓性能上的短板”,“我没有办法设计一个随便怎么折腾都能运转如飞的软件。世界上也不存在这样的软件!!!”。看起来,贺老师的确比几个月前自信多了,但希望不要把自信膨胀成自负,连用户的不好听的建议都听不进去了。忠言逆耳,拍马屁的人对软件发展不会有太大好处!言外之意,贺老师已经下了定论,现在的狐表已经不存在性能上的短板,那用户们以后就不要提这方面的建议了!再提我也不会认真听了!或许贺老师有贺老师的道理,我只想问一句:一年前推出狐表的时候,您想到了现在的版本中窗口中可以加入任何表而且可以动态切换表吗?(这是贺老师当时无论如何也不同意的事)。想到后来的Excel报表部分会重新写吗?想到了公测版推出将近1年的时候还会换心吗?只有已经发生的事情是确定的,未来的事情都有不确定性,尤其对于一个尽管非常优秀但还没有正式上市的软件,我认为还是不要过早下定论,把用户意见拒之门外好一点!

  

[此贴子已经被作者于2009-9-5 7:39:56编辑过]

 回到顶部
总数 21 1 2 3 下一页