我现在的想法是把每个功能模块化,也就是一个功能搞成一个单元(以前是基本所有功能都在一个单元里,而且都是全局函数或变量)。
比如说原功能:
type
var
b: Integer;
{省略N多变量声明}
procedure a();
{省略N多过程声明}
implementation
现在我想新搞一个单元
Txx = class
public
b: Integer;
procedure a();
end;
(这种类那么就是一个功能一个类,在总工程创建主窗体里每个类都要create一次,性能如何?)
Txx = record
b: Integer;
procedure a();
end;
(这种我测试结构体里也可以有过程,他不需要创建只需要声明即可,性能如何?)
还有就是新搞一个单元
type
var
b: Integer;
procedure a();
implementation
在其他单元调用的时候 搞成 单元名.a 这种方法使用(这种应该属于静态的,意义是 单元名是功能, 功能.过程)
以上三种那种效率好呢? 第一个类,我怕很多很多类都create那么效率就不行吧,不过现在有个类方法,类方法不需创建,不了解他的性能如何?
大家帮忙解密疑团,在此谢过
9 个解决方案
#1
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
#2
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
#3
你要了解Create到底干了些什么,就知道到底慢不慢了,不要想当然“创建”就是繁琐的,除了一些自定义的初始化,Create其实只是为类结构申请了内存,就像你结构体+方法一样,类的构造,等于申明了一个结构体指针并为该指针分配内存空间。
#4
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
你要了解Create到底干了些什么,就知道到底慢不慢了,不要想当然“创建”就是繁琐的,除了一些自定义的初始化,Create其实只是为类结构申请了内存,就像你结构体+方法一样,类的构造,等于申明了一个结构体指针并为该指针分配内存空间。
申请空间这个我到是知道的,如我原来的代码全部都是全局变量 全局函数,我把每个功能改成每个类调用差距大吗? 不好意识,我不知道如何测试他俩的性能,类应该占用内存多一些,最少类要保存有个指针地址在内存中
#5
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
你要了解Create到底干了些什么,就知道到底慢不慢了,不要想当然“创建”就是繁琐的,除了一些自定义的初始化,Create其实只是为类结构申请了内存,就像你结构体+方法一样,类的构造,等于申明了一个结构体指针并为该指针分配内存空间。
申请空间这个我到是知道的,如我原来的代码全部都是全局变量 全局函数,我把每个功能改成每个类调用差距大吗? 不好意识,我不知道如何测试他俩的性能,类应该占用内存多一些,最少类要保存有个指针地址在内存中
你要关心性能就别用面向对象,面向对象有额外开销,相比代码可读可维护性来说,这点开销几乎可以忽略不计,说白了你追求错了方向,你只要代码没问题,逻辑正常,再慢也慢不过虚拟机类语言,比如.net,java,这类语言运行都不存在性能问题,所以别杞人忧天了,好好写好代码,让自己的代码更易读易维护,真要优化就如我上面说的,别用面向对象,加上调用频率高的函数使用汇编,但是,我得提醒你的是,大部分人写出来的汇编代码,还比不上编译器编译出来的。
#6
如果只是想把程序整理得清楚一点,又不想创建太多的对象的话,我建议用LZ最后一种方法,这样调用的地方更改还少一些。
#7
一般类的创建,应该是很快的,不会是性能的瓶颈
#8
2和3结合。
用不用类完全得看你的设计,一般项目都会有一个单元叫Global放一些全局变量和函数,这里面叫单元方法,引用了单元就可以用,你看很多系统函数都是这种,引用单元就可以用,而不是类方法。
用不用类完全得看你的设计,一般项目都会有一个单元叫Global放一些全局变量和函数,这里面叫单元方法,引用了单元就可以用,你看很多系统函数都是这种,引用单元就可以用,而不是类方法。
#9
应该差不多,没什么太大区别!主要看怎么用着方便吧!影响性能的一般都是数据库之类的操作,至于你的创建和释放应该差别不大!
#1
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
#2
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
#3
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
你要了解Create到底干了些什么,就知道到底慢不慢了,不要想当然“创建”就是繁琐的,除了一些自定义的初始化,Create其实只是为类结构申请了内存,就像你结构体+方法一样,类的构造,等于申明了一个结构体指针并为该指针分配内存空间。
#4
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
你要了解Create到底干了些什么,就知道到底慢不慢了,不要想当然“创建”就是繁琐的,除了一些自定义的初始化,Create其实只是为类结构申请了内存,就像你结构体+方法一样,类的构造,等于申明了一个结构体指针并为该指针分配内存空间。
申请空间这个我到是知道的,如我原来的代码全部都是全局变量 全局函数,我把每个功能改成每个类调用差距大吗? 不好意识,我不知道如何测试他俩的性能,类应该占用内存多一些,最少类要保存有个指针地址在内存中
#5
建议使用类进行封装,代码可读性、可维护性比性能重要的多,当然,你如果要追求性能,那么抛弃一切OOP的思想,使用面向过程的编程方法,再加上部分函数使用汇编实现,这样性能提升会比较明显。
汇编我是不懂了,我也只是想把每个功能模块封装下,除了我上面3种封装方式,还有其他方法吗? 以上3种方法建议使用类吗? 很多类一起create好像很慢
你要了解Create到底干了些什么,就知道到底慢不慢了,不要想当然“创建”就是繁琐的,除了一些自定义的初始化,Create其实只是为类结构申请了内存,就像你结构体+方法一样,类的构造,等于申明了一个结构体指针并为该指针分配内存空间。
申请空间这个我到是知道的,如我原来的代码全部都是全局变量 全局函数,我把每个功能改成每个类调用差距大吗? 不好意识,我不知道如何测试他俩的性能,类应该占用内存多一些,最少类要保存有个指针地址在内存中
你要关心性能就别用面向对象,面向对象有额外开销,相比代码可读可维护性来说,这点开销几乎可以忽略不计,说白了你追求错了方向,你只要代码没问题,逻辑正常,再慢也慢不过虚拟机类语言,比如.net,java,这类语言运行都不存在性能问题,所以别杞人忧天了,好好写好代码,让自己的代码更易读易维护,真要优化就如我上面说的,别用面向对象,加上调用频率高的函数使用汇编,但是,我得提醒你的是,大部分人写出来的汇编代码,还比不上编译器编译出来的。
#6
如果只是想把程序整理得清楚一点,又不想创建太多的对象的话,我建议用LZ最后一种方法,这样调用的地方更改还少一些。
#7
一般类的创建,应该是很快的,不会是性能的瓶颈
#8
2和3结合。
用不用类完全得看你的设计,一般项目都会有一个单元叫Global放一些全局变量和函数,这里面叫单元方法,引用了单元就可以用,你看很多系统函数都是这种,引用单元就可以用,而不是类方法。
用不用类完全得看你的设计,一般项目都会有一个单元叫Global放一些全局变量和函数,这里面叫单元方法,引用了单元就可以用,你看很多系统函数都是这种,引用单元就可以用,而不是类方法。
#9
应该差不多,没什么太大区别!主要看怎么用着方便吧!影响性能的一般都是数据库之类的操作,至于你的创建和释放应该差别不大!