多核时代的移动开发讨论JAVA,C#,还是F#

beyondma
嵌入式领域优质创作者
博客专家认证
2012-12-08 09:02:52
加精
前一段时代发贴讨论了XNA与DIRECTX的各自前途问题。看到很多朋友的回贴还是很有启发。其实这样的讨论意义并不是很大,因为我之前就是做DIRECTX的后来转XNA很简单。因为建模的方法都一样,VIEW,PRJECTION和WORLD的概念也没有什么变化。
这一段仔细研究了并行计算的相关话题,我感觉由于移动平台的特殊性(通常只有一个程序为用户当前使用的程序),所以在移动平台上并行优化比桌面上更为重要。感觉就像面向对向的思想及潮流不可逆转一样。函数式语言的时代也会在不久的将来到来。
推荐一下我的这篇博客,http://blog.csdn.net/beyondma/article/details/8273412
但是不可否认目前还是OBJECT -C,JAVA,及C#等面向对象的编程语言是主流。但是就是我博客中所述一样,这些语言在多核优化上全部都有先天不足。了解函数式语言的思想会帮助移动平台的程序员掌握到整个潮流。
以上个人观点,欢迎讨论。
...全文
8405 64 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
64 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingdelee 2012-12-30
  • 打赏
  • 举报
回复
楼主是好人,大大的支持
jialiry 2012-12-30
  • 打赏
  • 举报
回复
LZ发明一种语言吧,如叫多核编程语言C##,人家老外什么html等也是民间爱好者自己搞的
diamond_back 2012-12-29
  • 打赏
  • 举报
回复
谢楼主分享,不错
ntu_web 2012-12-27
  • 打赏
  • 举报
回复
谢谢分享,不错
莫聆 2012-12-25
  • 打赏
  • 举报
回复
F#目前还只是方便了纯计算类应用,没有用户交互的部分,最多就是f#开发计算库供c#调用,很难说能取代什么。
cxyelu 2012-12-25
  • 打赏
  • 举报
回复
虽不懂,但觉厉!顶一个!
bigbaldy 2012-12-24
  • 打赏
  • 举报
回复
引用 52 楼 Java_Script__ 的回复:
引用 18 楼 bigbaldy 的回复:.net4.0的parallel还是很好用的 很怀疑parallel的效率,不多说,上代码,求大牛解释一下这个效率!~ C# code?12345678910111213141516171819202122232425262728293031323334353637383940414243 class Program……
貌似这个b[i] = a[i] + 1;计算过程太简单,也就是说每一个单独的线程干的事太简单就反而会慢,而如果每个线程中本身要干的事比较花时间,例如你改成b[i]=(int)Math.Pow(i,i),速度就是并行计算快了
嘶吼的蚂蚁 2012-12-24
  • 打赏
  • 举报
回复
人呢?
嘶吼的蚂蚁 2012-12-22
  • 打赏
  • 举报
回复
引用 54 楼 BEYONDMA 的回复:
引用 53 楼 Java_Script__ 的回复:普通的for循环执行时间比Parallel.For循环执行的时间相差不大,而且我测试几次竟然大部分Parallel.For比普通for循环执行的时间还要长,这是为什么? 啥机器配置?
beyondma 2012-12-22
  • 打赏
  • 举报
回复
引用 53 楼 Java_Script__ 的回复:
普通的for循环执行时间比Parallel.For循环执行的时间相差不大,而且我测试几次竟然大部分Parallel.For比普通for循环执行的时间还要长,这是为什么?
啥机器配置?
嘶吼的蚂蚁 2012-12-22
  • 打赏
  • 举报
回复
普通的for循环执行时间比Parallel.For循环执行的时间相差不大,而且我测试几次竟然大部分Parallel.For比普通for循环执行的时间还要长,这是为什么?
嘶吼的蚂蚁 2012-12-22
  • 打赏
  • 举报
回复
引用 18 楼 bigbaldy 的回复:
.net4.0的parallel还是很好用的
很怀疑parallel的效率,不多说,上代码,求大牛解释一下这个效率!~

    class Program
    {
        static void Main(string[] args)
        {
            int[] a = new int[100000000];
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = i;
            }
            Program pro = new Program();
            pro.CommonLoop(a);//普通循环
            GC.Collect();
            pro.ConcurrencyLoop(a);//4.0新特性并行循环
            Console.ReadLine();
        }

        private void CommonLoop(int[] a)
        {
            int[] b = new int[100000000];
            Stopwatch newstopWatch = new Stopwatch();
            newstopWatch.Start();
            for (int i = 0; i < a.Length; i++)
            {
                b[i] = a[i] + 1;

            }
            newstopWatch.Stop();
            Console.WriteLine("普通for循环执行时间:" + newstopWatch.ElapsedTicks);
        }

        private void ConcurrencyLoop(int[] a)
        {
            int[] b = new int[100000000];
            Stopwatch newstopWatch = new Stopwatch();
            newstopWatch.Start();
            Parallel.For(0, a.Length, i =>
            {
                b[i] = a[i] + 1;
            });
            newstopWatch.Stop();
            Console.WriteLine("并行循环执行时间:" + newstopWatch.ElapsedTicks);
        }
    }
#blackheart 2012-12-20
  • 打赏
  • 举报
回复
我假设多核等同于并行: 从语言本质层面来讲,函数式语言更适合并行。 C#,JAVA等命令式语言,都是基于“操作影响结果”,依赖于操作的副作用来完成任务的,副作用这东西明显不适合并行计算,这东西也是导致各种锁、同步机制的最本质原因。 F#以及其前辈,和其他函数式语言都基于“操作产生结果”,比非函数式语言更容易避免或者消除副作用在并行情况下带来的等等问题。
一字先生 2012-12-19
  • 打赏
  • 举报
回复
学习一下,
iw_deity 2012-12-19
  • 打赏
  • 举报
回复
多核时代看好golang
撒旦啊 2012-12-18
  • 打赏
  • 举报
回复
来看看~~~不错
albertbanda 2012-12-16
  • 打赏
  • 举报
回复
呵呵,学精一样、触类旁通!
ameyume 2012-12-16
  • 打赏
  • 举报
回复
多核时代面向对象依然重要。
zhou101821 2012-12-16
  • 打赏
  • 举报
回复
写得很好支持
Ahh_Freshmeat 2012-12-14
  • 打赏
  • 举报
回复
大牛来说一下
加载更多回复(36)

7,660

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧