powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
21 сообщений из 296, страница 12 из 12
О применимость языков
    #39043070
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, спасибо за полезное исследование.
...
Рейтинг: 0 / 0
О применимость языков
    #39043119
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TВсе тоже самое касается фрэймворка .Net/Java: если он уже в памяти, то расходы на его подсовывание в конкретный процесс незначительны. В нативном коде при вызове WinAPI происходит тоже самое.
Это я все к тому что показатель "Ошибок страниц" ничего полезного не показывает.

Есть такой параметр как "Ошибок страниц/сек", т.е. сколько было за последнюю секунду. Вот он более реально показывает насколько интенсивно используется подкачка с диска в конкретный момент.
"Ошибок страниц/сек" это именно "Ошибок страниц" деленное в секунду. Показывает тоже самое.

Можешь запустить параллельное чтение двух, трех разных файлов - создашь конкуренцию за кэш.

С программным кодом не совсем так -
-во-первых там много несвязанных маленьких страничек
-во-вторых есть сегменты данных, которые при записи в них создают копию в памяти для каждого процесса
-в третьих, должны быть как минимум таблицы виртуализации для изменяемого кода
...
Рейтинг: 0 / 0
О применимость языков
    #39043154
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл"Ошибок страниц/сек" это именно "Ошибок страниц" деленное в секунду. Показывает тоже самое.
Напутал немного, нет такого параметра вовсе, в 7-ке это "Дельта ошибок страниц", в хэлпе так написано "Изменение количества ошибок страницы со времени последнего обновления."

ЗимарглМожешь запустить параллельное чтение двух, трех разных файлов - создашь конкуренцию за кэш.
Могу, только речь о конкретной задаче, фрэймворк это одни теже файлы в разные процессы.

ЗимарглС программным кодом не совсем так -
-во-первых там много несвязанных маленьких страничек
ИМХУ не принципиально. Подкачка из одного файла или из сотни.
Зимаргл-во-вторых есть сегменты данных, которые при записи в них создают копию в памяти для каждого процесса
-в третьих, должны быть как минимум таблицы виртуализации для изменяемого кода
В нативном коде рантайм С/С++ тоже все это создает. WinAPI создает. Прочие либы (если используются) создают.
Вопрос сколько это занимает в байтах.
...
Рейтинг: 0 / 0
О применимость языков
    #39046360
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сводная табличка по использованию памяти разными фреймворками на примере мелких программ

ProcessLanguageframeworksMem (Working Set)Mem (WS Private) KbMem (Virtual Size)Page FaultsxmlreaderC#.NET900817841248882440wpfapplicationC#.Net28400910023560010300snippet165.classJavaJDK7+SWT4.427484133684951568230snippet165.dDDMD2+SWT3.496441980914162486CardRaytracerDDMD21038427361118683757CardRaytracer (optimized)DGDC39921656678481016CardRaytracerC++gcc17087247212424CardRaytracerPascalFPC33080110454608785


Working set - реально используемая память
WS private - память, используемая для каждого процесса из множества копий индивидуально
Virtual Size - учитывает отмаппленную память всеми известными dll процесса (фреймворком)
...
Рейтинг: 0 / 0
О применимость языков
    #39047204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл, ммм... даже не знаю какие выводы из этой таблички можно сделать.
...
Рейтинг: 0 / 0
О применимость языков
    #39047235
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЗимаргл, ммм... даже не знаю какие выводы из этой таблички можно сделать.Какие бы не сделал - все бессмысленны.
Можно сколько угодно утверждать что один язык лучше другого, но у того другого все равно будут приверженцы, просто потому что им нравится.
...
Рейтинг: 0 / 0
О применимость языков
    #39047334
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зяма провёл офигенскую работу по анализу мемори. Учёл даже промахи страниц. Да только
я не могу придумать как теперь это ранжировать. И почему разные приложения?
Как их сопоставить? Как сравнить грузовик с легковушкой?
...
Рейтинг: 0 / 0
О применимость языков
    #39047435
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Для начала - это не тест, это только разметка заготовки теста. Выводы рановато делать.

Программы 2-4 и 5-8 имеют одинаковую или близкую функциональность.

Пока намечаются следующие пути и вопросы:
1. засечь время загрузки и характеристики по памяти для каждого фреймворка, подгрузив определенный набор классов, например:
окошко с элементами + коллекции + xml? + еще что? - обсуждается
1.1 что считать стандартным фреймворком?
D = SWT + Phobos
С# = .net core + WPF
C++ = std:: + MFC? + boost?
Java = Java SE + Swing || JavaFX ?

2. проверить путем создания и манипулирования сотнями объектов из п.1, влияет ли это на скорость и на своппинг
...
Рейтинг: 0 / 0
О применимость языков
    #39047447
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл1. засечь время загрузки и характеристики по памяти для каждого фреймворка, подгрузив определенный набор классов, например:
окошко с элементами + коллекции + xml? + еще что? - обсуждается
1.1 что считать стандартным фреймворком?
D = SWT + Phobos
С# = .net core + WPF
C++ = std:: + MFC? + boost?
Java = Java SE + Swing || JavaFX ?
Объясни зачем мерять память клиентского приложения с гуем? Перфекционизм какой-то
Могу еще понять борьбу за память на сервере.
...
Рейтинг: 0 / 0
О применимость языков
    #39047457
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Java в моём способе зарабатывания нефте-долларов - это 80% server-side. В некоторых случаях
есть кросс-компилляторы типа GWT/GWTP которые стоят одной ногой в браузере у пользователя
а другой опираются на некоторый стаб на серверной стороне. Но как таких мерять?

Мемори футпринт в пользовательском браузере? Нонсенс! Его уже 10 лет никто не считает.
Более того. Срут в него безбожно. И не будь в JScript искусственных ограничителей типа
2-4 сокетов на JS или лимита на циклы - то браузер бы умирал через 5 минут после начала
серфинга.

Поэтому здесь

авторJava = Java SE + Swing || JavaFX ?

я не понимаю что считать и как сравнивать. Написать 2 формочки тут и там - это профанация. Не будет теста.
А если два крупных приложения - то никто не будет портировать в Свинг и ФХ. Ибо лень и нет мотива. Одно дело
мы как фан-сектор сели и раскурили рисование блестящих шаров. А другое дело окна. Скушно... Мдя.

Свинг останется как легаси которое выкинуть невозможно. Заменить нечем. JavaFX болеет тем
же чем и апплеты. А именно отсутствием предназначения. Неясно для чего оно ПРЕДНАЗНАЧЕНО.
Мультимедя явно уходит в HTML5. Там и специалистов больше. А ФХ - какой-то сыряк. Хотелось
бы увидеть полноценное приложение на ФХ где есть гриды к оторых я стону и плачу в каждой ветке.
Если кто покажет - буду рад.
...
Рейтинг: 0 / 0
О применимость языков
    #39047473
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглC++ = std:: + MFC? + boost?
Qt
...
Рейтинг: 0 / 0
О применимость языков
    #39047474
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Для засечки времени подгрузки фреймворка достаточно и одного типа окошка.
Можно конечно, оставить только невизуальные (серверные) классы, но я скорее думаю, что проблемы Явы шерифа не волнуют.

maytonМемори футпринт в пользовательском браузере? Нонсенс! Его уже 10 лет никто не считает.
А вот за это "пейсателей" надо на дыбу, т.к. каждое окошко хромиума это овер 100 Мб!
...
Рейтинг: 0 / 0
О применимость языков
    #39047476
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглДля засечки времени подгрузки фреймворка достаточно и одного типа окошка.

Чево? И что нам даст это время?
...
Рейтинг: 0 / 0
О применимость языков
    #39047483
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗимарглА вот за это "пейсателей" надо на дыбу, т.к. каждое окошко хромиума это овер 100 Мб!
Зачем? Есть FireFox. Гугл хром просто супер обнаглел в пожирании памяти, потому я отказался от хрома года 2-3 назад. Пишут что недавно они осознали и решают проблему прожорливости, пусть решают.
...
Рейтинг: 0 / 0
О применимость языков
    #39047490
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХУ x64 это больше маркетинг. Попытка второй раз продать уже проданный софт, а потом еще и впарить более мощное железо, т.к. старое не тянет. Это чудесно, выгодно, но не тема для данного форума.
...
Рейтинг: 0 / 0
О применимость языков
    #39047524
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХУ x64 это больше маркетинг.

фотошоп,СУБД легко утилизируют 2Gb+ памяти
про регистры - отписал в соседем топике

что касается применимости языков - у некоторых спецификаций и реализаций - серьёзные проблемы с массивами длиннее 2^31
...
Рейтинг: 0 / 0
О применимость языков
    #39047539
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилDima TИМХУ x64 это больше маркетинг.

фотошоп,СУБД легко утилизируют 2Gb+ памяти
про регистры - отписал в соседем топике

что касается применимости языков - у некоторых спецификаций и реализаций - серьёзные проблемы с массивами длиннее 2^31
Мы в 2004 юзали Oracle 9i на Xeon-ах с 8 Гб оперативы. При этом ОС и Оракл были 32х битные.
Но buffer-pool юзал порядка 5Гб.

OMG! Каг!
...
Рейтинг: 0 / 0
О применимость языков
    #39047542
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ты ещё вспомни досовский EMM драйвер
...
Рейтинг: 0 / 0
О применимость языков
    #39048362
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМы в 2004 юзали Oracle 9i на Xeon-ах с 8 Гб оперативы. При этом ОС и Оракл были 32х битные.
Но buffer-pool юзал порядка 5Гб.

OMG! Каг! AWE, что гемор. Второй вариант - не помню.
64-разрядный указатель позволяет окучивать большие объемы памяти простым и неизвращённым способом.

P.S. У AS/400 указатель был 128 бит "от рождения". Никто не умирал. Но, правда, там другая схема отображения виртуальных адресов на физическую память.

P.P.S. Нет, аппаратная разрядность AS/400 - те же 52 бита.
...
Рейтинг: 0 / 0
О применимость языков
    #39048376
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилmayton,

ты ещё вспомни досовский EMM драйвер
Уже вспомнил.
...
Рейтинг: 0 / 0
О применимость языков
    #39071234
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем я дописал тестик.
Mem (Working set). KB Mem (WS private). KB Page faults Creation time. ms Delete time. msJava1.7 54500 37200 37600 13850 800DMD2 32072 23300 8070 8450 660

Одна и та же программка. Просто создает 500 окон.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
/*  speed test SWT
 * based on Snippet165
 */

/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
//package org.eclipse.swt.snippets;

/*
 * Create a CTabFolder with min and max buttons, as well as close button and
 * image only on selected tab.
 *
 * For a list of all SWT example snippets see
 * http://www.eclipse.org/swt/snippets/
 *
 * @since 3.0
 */
import org.eclipse.swt.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.events.*;
import java.util.ArrayList;

// was Snippet165
public class frmWorkTestSWT {

static int numWindows = 500;

static Image image; // box
static Display display;
static ArrayList<Shell> subWindows;
static Label timeRun;

static Shell newWindow()
{
 final Shell shell = new Shell (display);
 shell.setLayout(new GridLayout());
 final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
 folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
 folder.setSimple(false);
 folder.setUnselectedImageVisible(false);
 folder.setUnselectedCloseVisible(false);
 for (int i = 0; i < 8; i++) {
  CTabItem item = new CTabItem(folder, SWT.CLOSE);
  item.setText("Item "+i);
  item.setImage(image);
  Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
  text.setText("Text for item "+i+"\n\none, two, three\n\nabcdefghijklmnop");
  item.setControl(text);
 }
 folder.setMinimizeVisible(true);
 folder.setMaximizeVisible(true);
 folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
  @Override
  public void minimize(CTabFolderEvent event) {
   folder.setMinimized(true);
   folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
   shell.layout(true);
  }
  @Override
  public void maximize(CTabFolderEvent event) {
   folder.setMaximized(true);
   folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
   shell.layout(true);
  }
  @Override
  public void restore(CTabFolderEvent event) {
   folder.setMinimized(false);
   folder.setMaximized(false);
   folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
   shell.layout(true);
  }
 });
 shell.setSize(300, 300);
    return shell;
}

public static void main (String [] args) {
 display = new Display ();
 image = new Image(display, 16, 16);
 GC gc = new GC(image);
 gc.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
 gc.fillRectangle(0, 0, 16, 16);
 gc.setBackground(display.getSystemColor(SWT.COLOR_YELLOW));
 gc.fillRectangle(3, 3, 10, 10);
 gc.dispose();
 subWindows = new ArrayList<Shell>();
 final Shell shell = new Shell (display);

    shell.setSize(300, 200);
    shell.setLayout(new FillLayout(SWT.VERTICAL));

    timeRun = new Label (shell, SWT.BORDER);
    timeRun.setText("measure time");
                     
    Button create = new Button (shell, SWT.PUSH);
    create.setText ("Create");
    create.addSelectionListener (new SelectionAdapter(){
        @Override
        public void widgetSelected (SelectionEvent e) {
          long startTime = System.currentTimeMillis();
            for (int i = 0; i < numWindows; i++)
            {
                subWindows.add(newWindow());
                subWindows.get(i).open();
            }
            long endTime   = System.currentTimeMillis();
            long totalTime = endTime - startTime;
            timeRun.setText(String.format("running: %d ms", totalTime));
        }
    });
    Button destroy = new Button (shell, SWT.PUSH);
    destroy.setText ("Destroy");
    destroy.addSelectionListener (new SelectionAdapter(){
        @Override
        public void widgetSelected (SelectionEvent e) {
          long startTime = System.currentTimeMillis();
            for (Shell wn: subWindows)
            {
                wn.dispose();
            }
            subWindows.clear();
            long endTime   = System.currentTimeMillis();
            long totalTime = endTime - startTime;
            timeRun.setText(String.format("running: %d ms", totalTime));
        }
    });

   
    shell.pack();
 shell.open ();
 while (!shell.isDisposed ()) {
  if (!display.readAndDispatch ()) display.sleep ();
 }
 image.dispose();
 display.dispose ();
}
}


Вывод - чем меньше тасуем памяти (с помощью фреймворка), тем быстрее работаем.
Это еще у меня своппинг быстрый - SSD.

P.S.Кому не лень - пробуйте переписать на .net. Думаю результат будет сравним с Явой.
...
Рейтинг: 0 / 0
21 сообщений из 296, страница 12 из 12
Форумы / Программирование [игнор отключен] [закрыт для гостей] / О применимость языков
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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