通过VBA编程,我们扩展了Excel的计算能力,并且只要我们有足够多的想法,就可以创造出更多的VBA程序来扩展Excel。但上面介绍的方法,当采样数量增加时,运算速度就会下降。比如对同样的蒙特卡罗模拟计算1次,计算时间为1.59375s,如图8-16所示。
而当我们计算10次取平均值时,计算时间为15.265625s,如图8-17所示。
图8-17 对蒙特卡罗模拟计算10次取均值
将图8-17与图8-16对比可知计算10次是计算1次时间的10倍,换句话说,当计算量与数据量增大的同时,Excel的运算速度也就相应下降。
而现在的计算机一般都拥有多核,显然可以使用多线程编程技术来将计算分配到多个处理器上执行,但使用VBA的多线程编程技术,就不得不学习更加复杂的函数库以及处理线程同步、线程死锁等问题。有没有办法可以充分利用多核CPU而又不必编写过于复杂的VBA程序,让那些底层的并行计算自动完成?云计算中的网格计算技术就提供了很好的编程模型,开发人员不需要关心线程或者进程如何编写,只要把大份工作切成小份工作,然后将小份工作同时交给网格计算软件,最后汇总结果就可以。前面几章提到的Hadoop以及Symphony DE都是这样的软件,相信通过前面几章的学习,读者已经熟悉了它们的使用方式。并且在第7章,我们已经使用Symphony DE创建了相应的风险投资应用,如果可以使用Excel访问,将节省大量的开发时间。(www.xing528.com)
要将Excel与云计算相结合,就需要使用Excel相应的技术。Excel提供了通过插件进行功能扩展的可能。通过编写和安装插件,将可以使Excel与其他软件进行集成,为工作提供极大的便利。开发这样的插件一般需要使用COM组件技术。
COM组件是微软公司为了计算机工业的软件生产更加符合人类的行为方式而开发的一种软件开发技术。在COM构架下,开发人员可以开发出各种功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以将应用系统扩展到网络环境下;COM与语言、平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。
COM组件是在20世纪90年代末提出的,虽然有些陈旧,但却在Windows系统开发上有着不可替代的作用,很多Windows程序都是通过COM组件来实现扩展的。
在这里,并不介绍如何编写一个COM组件程序,而是侧重于如何使用已有的COM组件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。