powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрое чтение и разбор файла
25 сообщений из 158, страница 6 из 7
Быстрое чтение и разбор файла
    #39405446
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и первый тренарый забороть. Но выходит 281 :(
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class Main {
    public static void main(String[] x) throws Exception {
        int[] a = new int[201];
        int b = 0, v = 0, n = 2;
        while (b > -1) {
            b = System.in.read();
            if (n < 2 || 0 == (n = b - 10))
                if (b > 45) {
                    v *= 10;
                    v += b - 48;
                    n |= 1;
                } else if (b == 45)
                    n = -1;
                else if (n != 0) {
                    a[v * n + 100]++;
                    v = n = 0;
                }
        }
        while (b++ < 200)
            while (a[b]--> 0)
                System.out.print(b - 100 + " ");
    }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405449
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевОднако ж, когда я пускаю у себя миллион out.print() - я не укладываюсь в 2 сек (с перенаправлением выхлопа в файл).
Локально тестируешь? Напиши Java обертку для запуска. Похоже у них там System.in и System.out быстрый.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405456
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
278 и ну его нафиг...
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405462
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, внесу свои 5 копеек.
А вот так можно заменить в Java?
было
Код: java
1.
   else if (n != 0) {


стало
Код: java
1.
   else if (n) {
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405465
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008,

Нельзя. Это же не JavaScript. Строгая типизация и всё такое.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405466
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

там еще и
Код: java
1.
2.
3.
int b=0,v=0,n=9;
for(;(b=System.in.read())>-1;){
b=System.in.read();


Но это наверное, ты и сам заметил.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405468
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, жаль.
Я думал как в С++, допустима простая проверка на 0.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405474
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonAtum1
Код: java
1.
            Arrays.stream(s.split(" ")).mapToInt(Integer::parseInt).parallel().sorted().forEachOrdered(x->out.print(x + " "));


Не позорься.

Когда ты писал хакатоны со Streams - то это было респектабельно и красиво. И я тебя уважал. Но перфрманс - это явно не твоё.

split никогда не работал эффективно. Если ты хочешь производительность - то
никаких аллокаций и сплитов. Пили свой FSM и парсер текстового стрима.

Да дело не в перфомансе :)

Я еще раз повторюсь - идея была - решать все в функциональном стиле одной строкой .

и данное решение как раз их таких .

проблема возникает в ограничениях - и нужно искать компромисс - ужимать код , писать свои реализации итд ...

да, split - не быстр , хотя и обещали его ускорить ...

да можно написать свой парсер , и так и нужно делать .
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405475
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
277. Когда же меня наконец отпустит.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class Main {
    public static void main(String[] x) throws Exception {
        int[] a = new int[201];
        int b, v = 0, n = 2;
        while ((b = System.in.read()) > -1) {
            n = b == 10 ? 0 : n;
            if (n < 2)
                if (b > 45) {
                    v *= 10;
                    v += b - 48;
                    n |= 1;
                } else if (b > 44)
                    n = -1;
                else if (n != 0) {
                    a[v * n + 100]++;
                    v = n = 0;
                }
        }
        while (b++ < 200)
            while (a[b]--> 0)
                System.out.print(b - 100 + " ");
    }
}
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405481
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczМожно и первый тренарый забороть. Но выходит 281 :(
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class Main {
    public static void main(String[] x) throws Exception {
        int[] a = new int[201];
        int b = 0, v = 0, n = 2;
        while (b > -1) {
            b = System.in.read();
            if (n < 2 || 0 == (n = b - 10))
                if (b > 45) {
                    v *= 10;
                    v += b - 48;
                    n |= 1;
                } else if (b == 45)
                    n = -1;
                else if (n != 0) {
                    a[v * n + 100]++;
                    v = n = 0;
                }
        }
        while (b++ < 200)
            while (a[b]--> 0)
                System.out.print(b - 100 + " ");
    }
}




Спасибо !

Вы сделали мой день !

:)
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405488
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
277

Это очень круто ...

по времени - и памяти - там у них виртуалка и часто в обсуждениях пишут такое - попробуйте запустить код в другое время ... бывает что не хватает каких то сотых секунд .
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405536
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Я еще раз повторюсь - идея была - решать все в функциональном стиле одной строкой .
Решение было в количестве символов. Но укладываясь в память.
Из-за двухбайтовой кодировки входной поток из 5 000 004 символов легко занимает 10 миллионов байт. Плюс сплиты и сортировка и jvm съела больше 16 Mb
Причем при этом Hotspot вылезает за установленные лимиты
параметры-Xmx12412K -Xss24K -XX:MaxMetaspaceSize=2648K Main <input2.txt >out.txt а java.exe взяла 20M (Без стримов остается внутри них).
Плюс куча импортов, да и превлатить исходный поток в поток (простим авторам их стеб)
А так да - решение получилось небольшое.
Код: java
1.
2.
3.
4.
5.
6.
7.
import java.io.*;
import java.util.*;
class Main {
    public static void main(String[] q) throws Exception {
      new BufferedReader(new InputStreamReader(System.in)).lines().skip(1).map(w->w.split(" ")).flatMap(Arrays::stream).mapToInt(Integer::parseInt).sorted().forEach(x->System.out.print(x + " "));
    }
}


Правда должен же быть способ потратить меньше букв на превращение в поток.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405537
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exception лишний
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405539
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
261
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405562
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев261

Да. Все верно .

Спасибо.


Все это началось когда я посмотрел пару видео где. Декларировались следующее :

Век медленных компьютеров прошёл!

Мы будем писать код быстро и машины будут Египте же быстро исполнять!

А там где будут медленные места мы будем думать как их оптимизировать.


В этом подходе есть и минусы и плюсы:

Минусы в том что алгоритмы не оптимальные и на данном примере. Виден весь оверхед сплиты сортировка обычная не методом расчёта И так далее


Свомьрите сами написать алгоритм в олн строку занимает минуту . Написать эффективный


Алгоритм без ошибок куда дольше.

И вот нужно найти компромис .

Между эффективностью и скоростью разработки .


К тому же эффективный алгоритм сложен для понимания , через какое то время будет не легко понять что в нем происходит на уровне байт И так далее


Но именно это и есть программирование. И написанные алгоритмов .


Функциаональный стиль дал возможность легко понять что делает этот код он локаричен и краток но н эффективен. В производстве .


Вопрос философский где золотая середина ?
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405567
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но на сколь-ко-нибудь несортированных данных вылетает по времени.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405568
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев261. Превратить через Files read all lines и path вроде как можно, в этой тебе как раз это выше в начале и обсуждалось.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405578
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про время был не прав - сам паузу влепил
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405582
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Но это тоже букавки и в т.ч. в импорте.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405588
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но в любом случае, если файл одна строка (две - первую пропускаем), split не укладывается в память
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405719
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно создать свой поток, но это опять много букв
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
StreamSupport.stream(Spliterators.spliteratorUnknownSize(
   new Iterator<String>() {
    int n = 1;
    public boolean hasNext() {
     return n>0;
    }
    public String next() {
     String s="";
     try {
      for (;(n = System.in.read()) > -1;) 
       if (n>32) s+=(char)n; else if (s!="") break;
     } catch (Exception e) {}
     return s;
    }
   }
   , 16 ), false).skip(1).filter(b->b!="").mapToInt(Integer::parseInt).sorted().forEach(b->System.out.print(b+" "));
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405779
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Век медленных компьютеров прошёл!
С одной стороны оно так.
Миллион чисел сортируются за 16 ms.
А с другой
И этот же миллион чисел печатается за 4 699 ms.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405790
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевИ этот же миллион чисел печатается за 4 699 ms.+1, проблему можно решить перенаправлением потока в файл
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405797
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman+1, проблему можно решить перенаправлением потока в файл
По-моему это и есть "файл". На консоль на много дольше будет.
...
Рейтинг: 0 / 0
Быстрое чтение и разбор файла
    #39405801
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczUsman+1, проблему можно решить перенаправлением потока в файл
По-моему это и есть "файл". На консоль на много дольше будет.Если быть точнее, то так и есть.
Проблема с отрисовкой символов в окне, скролл, буферизация окна и пр. тормоза
...
Рейтинг: 0 / 0
25 сообщений из 158, страница 6 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Быстрое чтение и разбор файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]