我不记得我是在哪篇文章上看过,说在Windows上.net的速度一定会比Java写的程序快.但是没留心过,也以为肯定是这样的.刚好这几天研究.net上的StringBuilder,准备和Java的StringBuffer比较以下速度的时候,突然发现JDK5.0中居然也多出个StringBuilder类出来,呵呵.于是给它们3个都进行了次比较.
因为考虑JIT的影响所以取了10次时间差再取平均值来比较.
先看看它们3个在各自的文档中如何定义的:
.net StringBuilder
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。
java StringBuilder
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 |
java StringBuffer
线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 |
java和.net用的分别是Date与DateTime来获得时间差,所以这2个类的关键方法在这也有必要提到一下
java Date.getTime()
getTimepublic long getTime()
|
.net DateTime.Ticks
public Ticks {get;} 属性值 表示此实例的日期和时间的刻度数。该值介于 MinValue 和 MaxValue 之间。 备注此属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。 |
好了一返回的是毫秒一个返回的是微妙,所以知道毫秒与微妙之间的转化也是有必要的
1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s) 1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s) 1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s) 1秒=1,000,000,000,000 皮秒(ps) |
String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。 |
java StringBuilder
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 |
java StringBuffer
线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 |
java和.net用的分别是Date与DateTime来获得时间差,所以这2个类的关键方法在这也有必要提到一下
java Date.getTime()
getTimepublic long getTime()
|
.net DateTime.Ticks
public Ticks {get;} 属性值 表示此实例的日期和时间的刻度数。该值介于 MinValue 和 MaxValue 之间。 备注此属性的值为自 0001 年 1 月 1 日午夜 12:00 以来所经过时间以 100 毫微秒为间隔表示时的数字。 |
好了一返回的是毫秒一个返回的是微妙,所以知道毫秒与微妙之间的转化也是有必要的
1秒=1000毫秒(ms) 1毫秒=1/1,000秒(s) 1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s) 1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s) 1秒=1,000,000,000,000 皮秒(ps) |
C#程序:返回的时间是毫秒
using System; |
结果:
java程序 :返回毫秒
import java.util.*; |
结果:
对于这样的结果。我不想在说什么了……