Руководитель компании Novell объявил (http://www.novell.com/news/press/novells-board-of-directors-.../) о принятии решения не принимать предложение
хедж-фонда (http://www.opennet.me/opennews/art.shtml?num=25650) Elliott Associates о покупке бизнеса за 2 млрд. долларов США. Отказ от принятия сделки не носит принципиальный характер, в качестве причины указаны недостаточно привлекательные условия поглощения - в случае появление более интересного предложения руководство компании не исключает его принятие.
Ажиотаж вокруг покупки Novell позволил акциям компании подняться (http://www.google.com/finance?q=NASDAQ:NOVL) с 4.8 до 5.6 долларов за штуку, насколько стоимость акции упадет после выходных покажет будущее.URL: http://www.networkworld.com/news/2010/032010-novell-rejects-...
Новость: http://www.opennet.me/opennews/art.shtml?num=25884
Кто-то явно наварится на этой волне...
Запасаемся семечками с квасом или попкормом с кока-каллой
Как это кто? SCO и K°, конечно же.Novell — единственная компания, которая владеет ключевыми имущественными правами на код ядра Linux и UNIX™. Купят её и пингвинам можно будеть клеить ласты.
Зачинщик флейма?
с жавой может и лажанулся, но здесь он прав. слишком много на них завязано
> с жавой может и лажанулсяЭто хде?
Вот оптимизированный код:
public class StrBench4 {
public static void main(String[] arg) {
final int TEST_COUNT = 13;//число прогонов
final int COUNT = 1000000;//Мульён раз!
final String a = "Маша", b = "мыла", c = "раму!";
for (int tests = 1; tests <= TEST_COUNT; tests++) {
StringBuilder sb = new StringBuilder((a.length() + b.length() + c.length()) * COUNT);
long begin = System.currentTimeMillis();
for (int cnt = COUNT; --cnt >= 0;) {
sb.append(a).append(b).append(c).append(sb.charAt(tests-1));
}
long end = System.currentTimeMillis();
System.out.printf("Тест №%d\nРезультат: %.55s — длина строки %s символов\nВремя выполнения %d мс.\n", tests, sb, sb.length(), (end - begin));
}
}
}Тест №1
Результат: Машамылараму!ММашамылараму!ММашамылараму!ММашамылараму! — длина строки 14000000 символов
Время выполнения 155 мс.
Тест №2
Результат: Машамылараму!аМашамылараму!аМашамылараму!аМашамылараму! — длина строки 14000000 символов
Время выполнения 121 мс.
Тест №3
Результат: Машамылараму!шМашамылараму!шМашамылараму!шМашамылараму! — длина строки 14000000 символов
Время выполнения 91 мс.
Тест №4
Результат: Машамылараму!аМашамылараму!аМашамылараму!аМашамылараму! — длина строки 14000000 символов
Время выполнения 90 мс.
Тест №5
Результат: Машамылараму!мМашамылараму!мМашамылараму!мМашамылараму! — длина строки 14000000 символов
Время выполнения 90 мс.
Тест №6
Результат: Машамылараму!ыМашамылараму!ыМашамылараму!ыМашамылараму! — длина строки 14000000 символов
Время выполнения 91 мс.
Тест №7
Результат: Машамылараму!лМашамылараму!лМашамылараму!лМашамылараму! — длина строки 14000000 символов
Время выполнения 91 мс.
Тест №8
Результат: Машамылараму!аМашамылараму!аМашамылараму!аМашамылараму! — длина строки 14000000 символов
Время выполнения 93 мс.
Тест №9
Результат: Машамылараму!рМашамылараму!рМашамылараму!рМашамылараму! — длина строки 14000000 символов
Время выполнения 91 мс.
Тест №10
Результат: Машамылараму!аМашамылараму!аМашамылараму!аМашамылараму! — длина строки 14000000 символов
Время выполнения 88 мс.
Тест №11
Результат: Машамылараму!мМашамылараму!мМашамылараму!мМашамылараму! — длина строки 14000000 символов
Время выполнения 92 мс.
Тест №12
Результат: Машамылараму!уМашамылараму!уМашамылараму!уМашамылараму! — длина строки 14000000 символов
Время выполнения 91 мс.
Тест №13
Результат: Машамылараму!!Машамылараму!!Машамылараму!!Машамылараму! — длина строки 14000000 символов
Время выполнения 92 мс.Как видите, Java-код по скорости не уступает лучшим образцам "ручного" кода на C/Asm (см. http://www.opennet.me/openforum/vsluhforumID3/64859.html#90), если проэкстраполировать результаты теста на C/Asm со 100 тысяч итераций до миллиона (1 мс и 6 мс — для 100 тысяч итераций с оптимизацией и без, соответственно). К тому же в моём коде есть "фактор неожиданности" для оптимизатора строчных операций (строка .append(sb.charAt(tests-1)), который исключает выброс "мёртвого" кода на уровне JIT.
Такое же на C++ не судьба?
Иди ежыков паси, рисователь бенчмарковSystem.out.printf("Тест №%d\nРезультат: %.55s — длина строки %s символов\nВремя выполнения %d мс.\n", tests, sb, sb.length(), (end - begin));
Java метод length() возвращает тип int;
У тя printf пытается вывести char - "длина строки %s"А char = 140000000 это пипец, - SIGFAULT;
>Иди ежыков паси, рисователь бенчмарков
>
> System.out.printf("Тест №%d\nРезультат: %.55s — длина строки %s символов\nВремя выполнения %d
>мс.\n", tests, sb, sb.length(), (end - begin));
>
>Java метод length() возвращает тип int;
>У тя printf пытается вывести char - "длина строки %s"
>
>А char = 140000000 это пипец, - SIGFAULT;Просветись что ли:http://java.sun.com/javase/6/docs/api/java/util/Formatter.ht...
чем такую чушь пороть.Какой, нафик, char? length() — это 32-битный int. Конвертация происходит в строку внутри форматтера: <int>.toString(). В строку символов!
The format specifiers which do not correspond to arguments have the following syntax:
%[flags][width]conversion
The optional flags and width is defined as above.
The required conversion is a character indicating content to be inserted in the output.
...
ConversionsConversions are divided into the following categories:
# Numeric
1. Integral - may be applied to Java integral types: byte, Byte, short, Short, int and Integer, long, Long, and BigInteger
2. Floating Point - may be applied to Java floating-point types: float, Float, double, Double, and BigDecimal
...Conversion Argument Category Description
...
's', 'S' general If the argument arg is null, then the result is "null". If arg implements Formattable, then arg.formatTo is invoked. Otherwise, the result is obtained by invoking arg.toString().И, да, в Java все строки и символы юникодные (UCS-2 с "начала времён", а именно, с 1995 года) — не то что в некоторых недоязыках.
>И, да, в Java все строки и символы юникодные (UCS-2 с "начала
>времён", а именно, с 1995 года) — не то что в
>некоторых недоязыках.Это ты про тормозжабу что ли..
В С, wchar_t появился в стандарте C90...
>Иди ежыков паси, рисователь бенчмарковКажется твои примеры ему не понравились и он ушел в указанном направлении :). Наверное ниасилил заоптимизить :-)
>>Иди ежыков паси, рисователь бенчмарков
>
>Кажется твои примеры ему не понравились и он ушел в указанном направлении
>:). Наверное ниасилил заоптимизить :-)Да, а толку, если даже и 30 мс сделал бы.
Такие примеры не показатель, точнее показатель,
но скорости работы блока предсказаний и кэша на измеряемом проце.
Ибо strcpy 14 миллионов раз даже РеntiumPro не будет делать.
а будетbegin:
cmp EAX, EBX
jz begin;
; и только если не равны
mov EAX, EBX ; скопирует
jmp begin; ; и опять впадёт в цикл.
Но если боремся за милисекунды, тогда надо уж измерять полный uptime:# time ./a.out
и
# time java -jar javabench.jar
>Но если боремся за милисекунды, тогда надо уж измерять полный uptime:
>
># time ./a.out
>и
># time java -jar javabench.jarИ что намеряете? Скорость вывода символов в терминал? :))
>> с жавой может и лажанулся
>Это хде?
>Вот оптимизированный код:
>Такое же на C++ не судьба?На
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>int main (void)
{
char s[0x32];
register int i;
clock_t begin, end;begin = clock();
for (i = 0; i < 14000000; i++) {
stpcpy (stpcpy (stpcpy (s, "Маша"), "мыла"), "раму!");
}end = clock();
printf ("Count %d\n", i);
printf ("Time %f\n", (double)(end - begin) / CLOCKS_PER_SEC );
}
10 мс
>[оверквотинг удален]
>
> end = clock();
>
> printf ("Count %d\n", i);
> printf ("Time %f\n", (double)(end - begin) /
>CLOCKS_PER_SEC );
>}
>
>
>10 мсРезультат:
% gcc -O1 StrBench4.c
% ./a.out
Count 14000000
Time 0.046875Не увидел в тексте Wide-char символов и аналог ".append(sb.charAt(tests-1)".
- Незачёт.
>[оверквотинг удален]
>
>Результат:
>% gcc -O1 StrBench4.c
>% ./a.out
>Count 14000000
>Time 0.046875
>
>Не увидел в тексте Wide-char символов и аналог ".append(sb.charAt(tests-1)".
>
>- Незачёт.На тебе на зачёт.
Посчитай на жабе сумму простых чисел до 2^128, на всех ядрах и процах что есть!!!
#include <gmp.h>
#define POW2_128 "340282366920938463463374607431768211456"
int main (int argc, char **argv)
{
int k;
mpz_t i, sum;
mpz_t LIMIT;mpz_init (i);
mpz_init (sum);
mpz_init_set_str(LIMIT, POW2_128, 10);#pragma omp parallel
{
#pragma omp do private (i, k)
do {
mpz_add_ui(i, i, 1);
k = mpz_cmp(LIMIT, i);
if (mpz_probab_prime_p (i, 10) == 1 ) {
#pragma omp shared (sum)
#pragma omp critical (sum)
mpz_add(sum, i, sum), gmp_printf("Prime: %Zd, Sum %Zd, State: %d\n", i, sum, LIMIT);
#pragma omp flush(sum)
}
} while ( k != 0 );
#pragma omp end parallel
}
gmp_printf("%Zd\n", sum);
mpz_clear (i);
mpz_clear (sum);return 0;
}
>[оверквотинг удален]
>
>Результат:
>% gcc -O1 StrBench4.c
>% ./a.out
>Count 14000000
>Time 0.046875
>
>Не увидел в тексте Wide-char символов и аналог ".append(sb.charAt(tests-1)".
>
>- Незачёт.На, сам допиливай...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <wchar.h>
#include <unistd.h>
#include <time.h>int main (void)
{
wchar_t s[0x100];
register int i;
clock_t begin, end;begin = clock();
for (i = 0; i < 14000000; i++) {
wcpncpy(wcpcpy(wcpcpy (wcpcpy (s, L"Маша"), L"мыла"), L"раму!"), s, 1);
}
end = clock();wprintf (L"Count %d\n", i);
wprintf (L"Time %f\n", (double)(end - begin) / CLOCKS_PER_SEC );
wprintf(L"%ls\n", s);
}У мня,
Count 14000000
Time 0.590000:-P
читай лицензию GPL, думай..
"ключевыми имущественными правами на код ядра Linux" это тебе большие дядьки так сказали? толсто же
>единственная
>которая владеет ключевыми имущественными правами
>и пингвинам можно будеть клеить ласты.Поскорее бы уже, хай у них, б, всё уже купится и склеится. Может, бэсэдэшники кодить пойдут, портировать и либтулзы переписывать... Успехов то есть и ПОБОЛЬШЕ++
Интересная тенденция!
Профессиональное назначение хедж-фондов-уничтожение компаний, т.е. они делают на этом деньги. Кромсают и продают их по кускам!
Вот именно с покупки Novell и надо было начинать Дарлу МакБрайду, а затем уже атаковать IBM насчёт Unix/Linux. Тогда бы можно было рассчитывать на варианты успеха.
>Вот именно с покупки Novell и надо было начинать Дарлу МакБрайду, а
>затем уже атаковать IBM насчёт Unix/Linux. Тогда бы можно было рассчитывать
>на варианты успеха.Ну, сколько бюджета им M$ нарезали, с тем и играют - за $200 млн. Novell не купишь. Это сейчас они стоят $2 млрд, а в 2004 были в районе $4 млрд.
Могу только снять шляпу перед Гейтсом и его корпорацией - эти $200 млн. вошли в историю. У них есть прекрасные адвокаты и бизнес-стратеги. Со времён контракта с IBM имея очевидно негодный, нестандартный, опасный для пользователя и технически отсталый продукт, умудряются удерживаться на плаву. Выпускают замечательные мышки и клавиатуры.
Пусть так и не научились делать софт, но бизнесом рулят просто виртуозно.
>Могу только снять шляпу перед Гейтсом и его корпорацией - эти $200
>млн. вошли в историю.Шляподав млять. А на Украине у Рината Ахметова личное состояние 9.5 млрд. долларов.
И что теперь? Падать перед ним ниц и целовать его ступни?
>Пусть так и не научились делать софт, но бизнесом рулят просто виртуозно.
>+1, однозначно
> Руководство Novell отвергло предложение о покупке компанииМолодцы. Респект.