由买买提看人间百态

topics

全部话题 - 话题: fmpmain
(共0页)
o**2
发帖数: 168
1
来自主题: Programming版 - FMP 一个完整可运行的范例程序
这个范例展示的是FMP其中的一个feature: callFunction()。其实展示的内容和前两天
给出的代码片断是一样的,不过这里的是完整的、大家可以在自己的机器上运行的范例。
通过这个范例,大家可以观察:
1) 分别运行OopMain和FmpMain,visual地比较CPU的usages。
2) 比较OopMain和FmpMain源程序的异同。
3) FMP的灵活性,和其本身的大小(大约20K的jar,Java版的源码也就是900行)。
FMP把callFunction()设计成一个普通method call的replacement,当这个method本身
是相当独立的,就象这个范例展示的一样。
o**2
发帖数: 168
2
来自主题: Programming版 - FMP 一个完整可运行的范例程序
MITBBS只允许贴image file附件,所以我只好把范例程序临时挂在FMP的站上(至少一
周吧)。一共有四个文件,三个Java程序和一个FMP的jar。
OOP style:
http://fastmessenger.com/files/mitbbs20130519/OopMain.java
http://fastmessenger.com/files/mitbbs20130519/Calculator.java
FMP style:
http://fastmessenger.com/files/mitbbs20130519/fmp-for-java-2013 (有dor jar文件ext name)
http://fastmessenger.com/files/mitbbs20130519/FmpMain.java
http://fastmessenger.com/files/mitbbs20130519/Calculator.java
o**2
发帖数: 168
3
来自主题: Programming版 - FMP 一个完整可运行的范例程序
贴一下在我机器上的运行结果
OopMain
=======
Computing Fibonacci(5,000,000) ...
F(5,000,000) = 01537B41EBC050D32C62 ... 91D4E3B63F87A1EF7A45
Total time: 17831 ms.
FmpMain
=======
Computing Fibonacci(5,000,000) ...
F(5,000,000) = 01537B41EBC050D32C62 ... 91D4E3B63F87A1EF7A45
Total time: 9111 ms.
o**2
发帖数: 168
4
来自主题: Programming版 - FMP 一个完整可运行的范例程序
在这个特例上,FMP的使用方法的确和C#/Java的Task有类似之处。(顺便问一句,你是
做C#的吗?FMP也是有C#版的。)
所以我特意在FmpMain里面埋了个包袱,就是Object[] implObjs = new Object[3];
你有兴趣的话不妨试试把这个3改成其它的数字,比如1,2,4,5,6等,看看有什么区
别。应该会体会到FMP和Task有很大的不同。
o**2
发帖数: 168
5
来自主题: Programming版 - FMP 一个完整可运行的范例程序
这个参数 3 涉及了FMP的重要概念,就是active object。在FmpMain里面"calculator"
就是一个active object。FMP对调用和被调用的objects来说,都是no thread的,当然
messenger属于FMP系统object,最后还是要用thread来实现active object的。
FMP赋予了active object并发的语义:一个activeobject可以是一个single worker(
就是sequential programming);也可以是一个team of workers(就是多个独立的
sequential programming)。所以这个 3 是head count的意思。
在computeDijkstraFormula()里,每次调用"calculator:multiply" 3次,也就是说
这个算法的最大并发数是 3。于是参数 1 等于单个worker; 2 等于 a team of 2
workers; 速度也随之增快。但超过 3 之后,就不能在加快了。
对于调用和被调用的objects来说,这都是透明的... 阅读全帖
(共0页)