`
helian
  • 浏览: 17202 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Groovy的Loop

阅读更多

翻看别人的测试Groovy文章引起灵感,测试了一下Groovy中三种Loop的性能

def testForIn(){
    def start = System.currentTimeMillis();  
    
    int i=0  
     for (int x in 1..10000) {  
         for (int y in 1..1000) {  
             //i+=y  
         }  
     }
    
    println System.currentTimeMillis() - start
    println i 
}
def testRangeEach(){
    def start = System.currentTimeMillis();  
    
    int i=0  
     (1..10000).each{x->  
        (1..1000).each{y->  
            // i+=y  
         }  
     }
    
    println System.currentTimeMillis() - start
    println i 
}

def testOldJavaLoop(){
    def start = System.currentTimeMillis();  
    
    int i=0  
    for(int x= 1;x<=10000;x++) {
        for(int y=1;y<=1000;y++) {
           // i=i+y;
        }
    } 
    
    println System.currentTimeMillis() - start
    println i 
}

testForIn()
testRangeEach()
testOldJavaLoop()

 
结果:

563
0
3469
0
4109
0

 

分享到:
评论
2 楼 helian 2009-12-31  
jsp_boy 写道
这样的测试应该不靠谱,如果谈效率,groovy肯定不如java.你可以写个java程序试一下,效率肯定比上面的高不少。
	public static void testOldJavaLoop(){   
		long start = System.currentTimeMillis(); 		
		int i=0 ;    
		for(int x= 1;x<=10000;x++) {   
			for(int y=1;y<=1000;y++) {   
				i+=y;   
			}   
		}  		
		System.out.println(System.currentTimeMillis() - start );   
		System.out.println(i);    
	}   
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		testOldJavaLoop();
	}


都说了是groovy的loop,groovy本来就比java慢嘛
1 楼 jsp_boy 2009-12-31  
这样的测试应该不靠谱,如果谈效率,groovy肯定不如java.你可以写个java程序试一下,效率肯定比上面的高不少。
	public static void testOldJavaLoop(){   
		long start = System.currentTimeMillis(); 		
		int i=0 ;    
		for(int x= 1;x<=10000;x++) {   
			for(int y=1;y<=1000;y++) {   
				i+=y;   
			}   
		}  		
		System.out.println(System.currentTimeMillis() - start );   
		System.out.println(i);    
	}   
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		testOldJavaLoop();
	}

相关推荐

    groovy常用Script

    - `divide_loop.groovy` 可能涉及循环控制,Groovy支持for、while等循环结构,以及增强的for-each循环。 4. **目录操作**:`directory_01.groovy` 可能包含了处理文件系统目录的代码,Groovy提供了一系列的类和...

    unnecessary-wizard:Groovy 可配置 DI 容器

    不必要的向导Groovy 可配置 DI 容器灵活的依赖注入,可通过 groovy 代码进行配置。 一个简单的领域特定语言 (DSL) 使连接您的应用程序就像编写一个 For-Loop 来总结整数列表一样简单。 想尝尝吗? injector { // The...

    parallelfunctions让并行处理变得简单

    这个库的核心思想是使用协程(coroutines)和事件循环(event loop),它们在非阻塞 I/O 操作中特别有用,能够避免传统的回调地狱问题。 在 PHP 中使用 `parallel-functions`,首先需要安装相应的库,这可以通过 ...

    SoapUI Pro Indroduction

    - **数据源循环(DataSource Loop)**:对数据源中的每一项进行循环测试。 - **JDBC请求数据源(JDBC Request DataSource)**:直接通过数据库查询获取测试数据。 - **数据源连接(DataConnection)** - **数据源(JDBC)*...

    jsyntrax:用Java重新实现syntrax

    该规范是一组嵌套的Groovy函数调用: indentstack( 10 , line(opt( ' - ' ), choice( ' 0 ' , line( ' 1-9 ' , loop( None , ' 0-9 ' ))), opt( ' . ' , loop( ' 0-9 ' , None ))), line(opt(choice( ' e ' , '...

    webservice test with SOAPUI 详细教程

    - **Test Step**:具体执行的操作,如SOAP请求、Groovy脚本、属性、属性转移和数据接收等。 ### 2.1 Request 创建请求的方式是将WSDL或WADL文件导入到项目中,这将自动生成SOAP请求样本。这些请求可以被转化为测试...

    Vert.x线程模型揭秘

    与Node.js相比,Vert.x更加灵活,因为它支持多种编程语言如JavaScript、Ruby、Groovy、Java等,甚至可以在同一项目中混合使用这些语言。 #### 二、Vert.x的核心概念 为了更好地理解Vert.x的线程模型,我们首先需要...

    JDK17-java-shell-user-guide.pdf

    Java Shell 还提供了一个 REPL(Read-Eval-Print Loop)环境,允许用户实时查看执行结果。Java Shell 支持多种语言模式,包括 Java、Groovy、Scala 等。 在 Java Shell 中,用户可以使用各种命令来执行不同的操作。...

    Java - The Well-Grounded Java Developer

    - **Lisp Features**: Discussion on Clojure's Lisp heritage, including macros and the REPL (read-eval-print loop), which enable rapid prototyping and experimentation. #### PART 4: CRAFTING THE ...

    netty高性能异步I/O服务器/客户端开源开发工具

    Netty的核心是基于NIO(非阻塞I/O)和EventLoop事件驱动模型,这使得它能够在单线程或多线程环境下高效地处理大量并发连接。 1. **异步I/O**:Netty采用非阻塞I/O模型,允许在等待I/O操作完成时执行其他任务,从而...

    vert.x 3.3.3

    与Node.js相比,Vert.x提供了更多的语言支持,包括Java、JavaScript、Ruby、Groovy和 Kotlin,同时利用了Java虚拟机(JVM)的优势。 【描述】提到"比Node.Js更快",这可能是因为Vert.x利用了JVM的并发模型,如Event...

    androidMP4转换成gif动图

    ```groovy dependencies { implementation 'com.wonderkiln:androidimagemagick:0.2.1' } ``` 接下来,我们需要编写代码来实现MP4到GIF的转换。这里以`Android-ImageMagick`为例,提供一个基本的转换函数: ```...

    Lottie动画库的使用1

    ```groovy dependencies { implementation 'com.airbnb.android:lottie:2.0.0' } ``` 注意,Lottie库要求Android API级别14或更高。 b. XML布局加载:在XML布局文件中,使用LottieView来加载动画。例如: `...

    谷神星:Java 11和Gradle版本

    其中,最重要的特性包括HTTP客户端API的增强、模块化系统的完善、JShell(也称为REPL,Read-Eval-Print Loop)的改进以及对JVM内存管理的优化等。Java 11旨在提高开发效率、增强性能并保持向后兼容性。 Gradle是一...

    struts2标签介绍

    - **表达式语言**:Struts1.x不支持嵌入式语言(EL),而Struts2.0则支持多种表达式语言,包括OGNL(Object-Graph Navigation Language)、JSTL、Groovy以及Velocity等。 #### 三、非UI标签详解 ##### 3.1 if、...

    LottieAnimDemo.7z

    ```groovy dependencies { implementation 'com.airbnb.android:lottie:版本号' } ``` 加载 JSON 文件时,可以使用 `LottieAnimationView` 或 `LottieDrawable` 类。下面是一个简单的示例: ```java ...

    jdk-11.0.12_linux-x64_bin.tar.gz

    3. **动态类型语言支持**:JDK 11增加了对动态类型语言的支持,如Groovy和JavaScript,通过JEP 335(JShell Repl Improvements)改进了JShell(也称为REPL,Read-Eval-Print Loop)。 4. **文本块**:JEP 326(Text...

    lottie demo

    ```groovy dependencies { implementation 'com.airbnb.android:lottie:版本号' // 替换为最新版本号 } ``` 然后,同步项目,Lottie库就会被引入到你的Android Studio项目中。 接下来,你可以创建一个`...

Global site tag (gtag.js) - Google Analytics