我的问题是关于Java与编译代码的性能,例如高性能数值应用程序中的C++/fortran/assembly.我知道这是一个有争议的话题,但我正在寻找具体的答案/例子.社区维基.我之前曾问过类似的问题,但我认为我把它广泛地提出来并没有得到我想要的答案.
双精度矩阵矩阵乘法,通常称为blas库中的dgemm,能够实现接近100%的峰值CPU性能(就每秒浮动运算而言).
有几个因素可以实现这种表现:
缓存阻塞,实现最大内存局部性
循环展开以最小化控制开销
矢量指令,例如SSE
记忆预取
保证没有内存别名
我已经看过许多使用程序集,C++,fortran,Atlas,供应商BLAS的基准测试(典型情况是维度512及以上的矩阵).另一方面,我听说过Java的主要字节编译语言/实现可以快速或几乎与机器编译语言一样快.但是我还没有看到明确的基准测试表明它是如此.相反,似乎(根据我自己的研究)字节编译语言要慢得多.
你有没有很好的Java/C#矩阵矩阵乘法基准?实时编译器(实际实现,而不是假设)能够产生满足我列出的点的指令吗?
谢谢
关于性能:每个CPU都具有峰值性能,具体取决于处理器每秒可执行的指令数量.例如,现代2 ghz Intel CPU可以实现80亿双精度加/减一秒,从而产生8 gflops的峰值性能.矩阵矩阵乘法是能够在每秒操作次数方面实现几乎完全性能的算法之一,主要原因是计算内存操作的比率更高(N^3/N^2).数字我对订单上的某些东西感兴趣N > 500.
关于实现:阻塞等更高级别的细节是在源代码级别完成的.较低级别的优化由编译器处理,可能还有关于对齐/别名的编译器提示.字节编译的实现也可以使用块方法编写,因此原则上用于体面实现的源代码细节将非常相似.
我是jquery的新手,我可以用它做简单的编码.我想知道这些文件更"缩小""未压缩",何时应该使用每一个?
我在JTabbedPane中有2个JPanel,当在第一个面板内的面板上调用update(g)时(即动画),即使第二个面板是所选面板(即你可以看到的面板),更新的面板也出现在屏幕.为什么这样,我怎么能规避这种行为呢?
我有几个矩形图像(在横向和纵向模式下),并希望将它们绘制到透明的方形图像上,这样所有图像都会变成相同的大小而不会裁剪它们.我如何创建一个透明的UIImage并在顶部绘制另一个?
谢谢你的任何提示.
我在MATLAB中编辑colorbar时遇到问题.绘制颜色条,我想在YTickLabels上添加特定测量的单位(dB).这是通过以下命令完成的:
cy = get(ch,'YTickLabel');
set(ch,'YTickLabel',[]);
set(ch,'YTickLabel',strcat(cy,{' dB'}));
Run Code Online (Sandbox Code Playgroud)
但是当我调整图形大小时,MATLAB重新定义间隔,输出重复两次,如:
10 dB,20 dB,30 dB,10 dB,20 dB,30 dB而不是10 dB,20 dB,30 dB.
如何防止MATLAB重新定义其Y轴刻度,因此它不会弄乱我的颜色条?
我很好奇是否有可能在Haskell中动态构建列表理解.
举个例子,如果我有以下内容:
all_pows (a,a') (b,b') = [ a^y * b^z | y <- take a' [0..], z <- take b' [0..] ]
Run Code Online (Sandbox Code Playgroud)
我得到了我想要的东西
*Main> List.sort $ all_pows (2,3) (5,3)
[1,2,4,5,10,20,25,50,100]
Run Code Online (Sandbox Code Playgroud)
但是,我真正喜欢的是拥有类似的东西
all_pows [(Int,Int)] -> [Integer]
Run Code Online (Sandbox Code Playgroud)
这样我就可以N在不构建N版本的情况下支持参数对all_pows.我仍然是Haskell的新手,所以我可能忽略了一些显而易见的事情.这甚至可能吗?
我研究了几个小时,我有点沮丧.也许我只是缺少一些东西,因为我不熟悉博客.
我不是自己的博客,我只是使用WordPress.com.我想要包含c#代码的片段,让它们看起来像在Visual Studio中,或者至少使它们看起来很好,当然还有行号和颜色.我见过的解决方案似乎都假设您正在托管自己的博客.我无法弄清楚如何安装插件.
是否有一个小部件可以使代码片段看起来不错,或者其他一些我可以轻松使用的解决方案?
谢谢
编辑:Sarfraz概述了解决我的问题的一种方法(谢谢!),我已经尝试了但是我有一个问题,即它没有着色我的大部分代码(较新的关键字,如var,from,where,选择等).有没有解决这个或是否有其他解决方案?
我想找到一种方法来以编程方式触发选择器,使iPhone键盘从字母切换到数字.我知道我可以切换键盘类型,但我想知道是否有办法在不切换键盘类型的情况下执行此操作.
我无法让Java时钟测量从一个简单程序的开始到结束所经过的时间(以毫秒为单位).
我复制了下面的程序.您将看到我使用了实用程序Calendar,然后打印循环之前和之后的时间.无论循环花费多长时间,循环前后打印命令显示的时间都不会改变.
你能建议一个解决方案吗?
我用DrJava.
import java.util.Calendar;
class time
{
public static void main(String[] args)
{
int sum=0;
int i=0;
int j=0;
int n=300;
Calendar cal = Calendar.getInstance();
System.out.println("Current milliseconds since 13 Oct, 2008 are :" + cal.getTimeInMillis());
for (i=0;i < n; i++)
{
sum++;
System.out.println("ROW " + i);
}
System.out.println(" Current milliseconds since 13 Oct, 2008 are :" + cal.getTimeInMillis());
}
}
Run Code Online (Sandbox Code Playgroud) java ×3
iphone ×2
c ×1
c# ×1
css ×1
drawing ×1
dynamic ×1
haskell ×1
html ×1
jquery ×1
jtabbedpane ×1
matlab ×1
performance ×1
stylesheet ×1
styling ×1
swing ×1
uiimage ×1
uikeyboard ×1
uitextfield ×1
widget ×1
wordpress ×1