Очень занятная статья.
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)