Очень занятная статья.
http://haritonoff.livejournal.com/167975.html
понедельник, 27 февраля 2012 г.
вторник, 14 февраля 2012 г.
Scala, переопределение операторов
Продолжаю изучать Скалу.
Скала, как известно, тотально обьектно ориентирована. Здесь нет ни примитивов, ни операторов в прямом смысле этого слова. Однако, это совсем не значит, что вы не можете использовать "+","-" и другие операторы в своём коде.
"+" и "-" можно определить как методы в соответствуюших классах. Например, создадим класс Num
class Num (val intgr: Int){
def +(num: Num)= {
new Num( intgr + num.intgr)
}
def -(num: Num)= {
new Num( intgr - num.intgr)
}
override def toString = "Num "+ intgr
}
и запустим такой скрипт, чтобы протестировать наш код:
val num1 = new Num(10) val num2 = new Num(5) println ( num1 + num2 ) println ( num1 - num2 )Как нетрудно догадаться, результаты будут 15 и 5. Очень полезная возможность, не так ли?
четверг, 9 февраля 2012 г.
Хорошо быть Java - девелопером
Особенно в штатах :)
http://www.indeed.com даёт такую информацию:
Интересный факт. Быть Ява девелопером выгоднее, чем работать с ДотНет или ПэХаПэ. И даже ИТ аналитики зарабатывают меньше... Однако!
http://www.indeed.com даёт такую информацию:
Интересный факт. Быть Ява девелопером выгоднее, чем работать с ДотНет или ПэХаПэ. И даже ИТ аналитики зарабатывают меньше... Однако!
среда, 1 февраля 2012 г.
Java vs Scala vs Groovy performance. Так кто же быстрее?
Несколько лет назад начал интересоваться альтернативными языками для JVM. Groovy даже нашёл своё применение в некоторых "живых" проектах. Однако плохая производительность сильно ограничивала использование языка в реальных приложениях.
Прошло несколько лет, появился Groovy 1.8, который, по заявлениям разработчиков, справился с проблемами производительности. Так ли это на самом деле? Чтобы ответить на этот вопрос, я написал примитивные тесты на 3-х популярных языках для JVM.
Groovy.
Прошло несколько лет, появился Groovy 1.8, который, по заявлениям разработчиков, справился с проблемами производительности. Так ли это на самом деле? Чтобы ответить на этот вопрос, я написал примитивные тесты на 3-х популярных языках для JVM.
Groovy.
static void main(args) {
long l = System.currentTimeMillis()
int cnt = 0;
100000.times { i->
//def customer = new Tester(id: i, name:"Gromit", dob:new Date())
//String s = ("Hello ${customer.name} ${i}")
String s = ("Hello ${i} Groovy")
cnt += s.length()
}
println( "${System.currentTimeMillis() - l} - ${cnt}")
}
Результат - 438 миллисекунд.
То же самое в Scala :
override def main(args: Array[String]) {
val l = System.currentTimeMillis()
var cnt = 0;
for (i <- 0.until(100000)){
val s = "Hello " + i + " Times scala"
cnt += s.length()
}
println((System.currentTimeMillis() - l) + " - " + cnt)
}
187 миллисекунд, лучше более чем в 2 раза?
И теперь чистая Java (версии 1.7):
public static void main(String [] args) {
long l = System.currentTimeMillis();
int len = 0;
for(int i = 0; i < 100_000; i++){
String s = "Hello " + i + " Java";
len += s.length();
}
System.out.println( (System.currentTimeMillis() - l)+ " - " + len) ;
}
32 миллисекунды! более чем в 10 раз быстрее аналога на Groovy.
Java заруливает всех своих JVM опонентов, если речь идёт о производительности.
Подписаться на:
Комментарии (Atom)
