| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1975 人关注过本帖
标题:win7旗舰系统下,跑VFP很慢,请教。
只看楼主 加入收藏
oogami
Rank: 2
等 级:论坛游民
帖 子:62
专家分:16
注 册:2013-1-29
收藏
得分:0 
还有,俺找到这样一个能专门讨论VFP的版块好开心啊!

网上问人家都说VFP太老了你还在用啊……囧
2013-03-06 00:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
所谓的32位、64位,是指程序中的指针尺寸。32位指针是4字节的长度,4字节整数的极限就是4G(机2的32次方),这是这种尺寸的指针所能够到达的最远的地方,亦即内存的最远距离。64位指针,就是2的64次方。操作系统如果是64位的,那么它是能管理的内存很大,但问题是在这个操作系统上运行的程序本身设计的指针是不是也是64位的,如果不是,比如它是32位的,尽管宇宙真的很大(操作系统管理下的内存),但它自己的眼光看不到那么远,就只能仍然到4G处为止。所以,你平时看资料,都应该看过,在64位系统上最好运行64位的应用程序,否则64位系统被当32位用,当初64位系统刚推出,舆论说难以推广,也是指当时64位的应用程序很少。VFP就是32位应用程序,它的能力就只能寻址到4G内存极限。

现在返回说Windows。Windows的管理体系是有特点的,它是面向对象的管理模式,对任何应用程序,它把内存划分为两部分,各占一半,一半是它自己管理的,负责程序使用的系统内核(典型如窗体和各种控件,都是使用Windows自带的东西,你留意一下同一个VFP程序在XP下面跑和在Win7下面跑的窗体是不一样的就知道了,那正是用的Windows窗口,VFP自己没有),另一半才是程序自己的东西,包括指令代码和数据,加起来总共是2G。因此,VFP所能处理的DBF文件,能够调入到内存中进行处理的极限也就是2G,不管你的数据库有多少条记录,只要一个文件加起来的尺寸达到2G,就报警了——所以尽量不要把图片之类的数据放到数据表中的字段中,尽量按第三规范设计数据库,把数据按类别归类到不同的DBF文件,不要把所有数据集中在一起,重点是管理,一个表的字段再多或事实上无法分割,数据量也非常大,那么可以设计把表分开到几个DBF文件中,在程序逻辑上把几个表看成一个表,处理起来仍然是一个表,但单个文件的尺寸却不会超过2G。这种限制其实很容易处理(较难处理的是VFP不能超过10亿条记录)。

留意我上面说的,就知道关键是分割处理数据。你说的那台机,运行很快,仍然是内存的问题,内存够,就快,XP自身占用的内存少,3G内存留下的空闲内存多,就有足够的内存供SQL把数据全部放到内存中处理,当然快,而Win7自身占用的内存比XP多,你2G内存留下的空闲内存更少,就不够了。这里够不够,看两个方面,一是(空闲)内存实际上有多少,二是需要处理的数据实际上需要多少内存。

SQL查询操作所需要的内存很可观,一个表是100M,执行查询需要500M也不稀奇,看操作的复杂度了。像两个表连接之类,SQL在内存中要把两张表按对应的记录排列组合展开成一张巨大的临时表再做筛选的,然后把筛选出来的记录集中放在内存的一个临时表中给你使用,即除了原先的数据,内存中还有一份复制出来的数据表,自己可以想像一下那是怎样的资源消耗。1G的数据表,翻倍到2G以上,有什么奇怪的,正常得很,内存不够,它就写磁盘咯,反复刷写咯,磁盘的速度比内存慢千百倍,改用固态硬盘就快了。

遇到这种边界情形,是需要想办法的,不能靠指令和硬件投资来解决,又不是除了SQL指令之外别无他法。

[ 本帖最后由 TonyDeng 于 2013-3-6 01:34 编辑 ]
收到的鲜花
  • taifu9452013-03-06 08:07 送鲜花  7朵   附言:好文章,很精彩啊。确实是这样的,把个中关 ...
  • 有容就大2013-03-06 23:03 送鲜花  49朵   附言:如沐春风

授人以渔,不授人以鱼。
2013-03-06 01:28
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用oogami在2013-3-6 00:45:05的发言:

大哥你做什么工作的,专业程序员么,我好佩服你啊,啥都懂!
 
不过说实话您说的这些我基本都听不大懂,反正意思就是4G也不能根本上缓解问题。
再问个问题,我公司里面台式机,XP系统,3g内存跑VFP很顺畅,是不是因为win7x64对VFP支持不是很好的原因?
 
还有,您说的数据文件最多2G,是不是DBF文件2G就满了的意思?俺现在觉得,精算师就是个程序员,原理明白了,要用vb vfp等等软件编好多程序,唉
 
以后靠程序吃饭了,哈哈哈,请大侠多指导,我自己也会努力学的。
 
谢谢!
Windows 7 x64对VFP9.0的支持是很好的,我家里一直在用,从来没有发生任何问题。
2013-03-06 08:08
oogami
Rank: 2
等 级:论坛游民
帖 子:62
专家分:16
注 册:2013-1-29
收藏
得分:0 
回复 22楼 TonyDeng
这个解释的相当清楚啊!多谢多谢。
顺道问下,deng兄你经常在论坛的哦?
2013-03-06 19:28
oogami
Rank: 2
等 级:论坛游民
帖 子:62
专家分:16
注 册:2013-1-29
收藏
得分:0 
回复 23楼 taifu945
我主要是有两个问题

1、command框鼠标拖动的时候会很卡,不是那种连续拖动
2、用了一些select语句整个电脑就会很卡

我刚换了4G内存,不知道跑起来怎么样,有空回去试试
2013-03-06 19:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用oogami在2013-3-6 19:28:30的发言:

这个解释的相当清楚啊!多谢多谢。
顺道问下,deng兄你经常在论坛的哦?

从现在开始不总在线了

授人以渔,不授人以鱼。
2013-03-06 19:59
lishuo9913
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2013-3-2
收藏
得分:0 
没别的 就是内存不足而已 我跑个100多M的3G内存都显得不太给力~
2013-03-06 20:13
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2013-3-6 19:59:51的发言:


从现在开始不总在线了

为什么啊

梅尚程荀
马谭杨奚







                                                       
2013-03-06 23:02
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用oogami在2013-3-6 00:46:12的发言:

还有,俺找到这样一个能专门讨论VFP的版块好开心啊!

网上问人家都说VFP太老了你还在用啊……囧

你们公司还在用 说明还能赚钱 呵呵

梅尚程荀
马谭杨奚







                                                       
2013-03-06 23:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9803
专家分:26906
注 册:2012-2-5
收藏
得分:0 
色僧

坚守VFP最后的阵地
2013-03-07 06:28
快速回复:win7旗舰系统下,跑VFP很慢,请教。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016200 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved