Вопросы с тегами [performance]

1

голосов
2

ответ
398

Просмотры

Более эффективный, чтобы проверить, является ли переменная установлена, а затем установить его, или просто постоянно установить его?

Создание игры ... Более эффективно делать это? если 37 (keysDown) {// стрелка влево, если (sprite.state = 'левый'!) sprite.state = 'левый'; } или это? если (37) в keysDown {// стрелка влево sprite.state = 'левый'; } Это вызывается функция обновления моей игры (постоянно, как можно быстрее). Sidenote: вот мой входной код ключа проверки. // вход вар keysDown = {}; window.addEventListener ( 'KeyDown', функция (е) {keysDown [e.keyCode] = TRUE;}); window.addEventListener ( 'KeyUp', функция (е) {удалить keysDown [e.keyCode];});
Sam
1

голосов
2

ответ
369

Просмотры

Вызов и исполняемым и получать заданы параметры его STDOUT более эффективно в Python Script

Я пишу скрипт, который принимает долготу и широту и запускает их через исполняемый под названием gdallocationinfo. Исполняемый имеет широту и долготу в качестве аргументов и возвращает его STDOUT в качестве значения для этой координаты. Я читал о подпроцессов и мне было интересно, если это наиболее эффективный способ осуществить это, если я хочу, чтобы запустить много точек. Это, кажется, принимает очень много времени. Защиту gdalgetpointdata (долгота, широта): Учеб = subprocess.Popen ([ "gdallocationinfo",. "C: \ Users \ Data \ поп", "- WGS84", "- valonly", формат "{0}" (долгота) , "{0}". формат (широта)], стандартный вывод = subprocess.PIPE, оболочки = True) (вне, ERR) = Proc. общаться () возвращает Int (уходит) Есть ли лучший способ вызвать этот исполняемый файл без того, чтобы сделать новый суб-процесс каждый раз, когда я запускаю свою функцию? Есть ли что-то я мог бы сделать, чтобы ускорить его? Как примечание стороны, я знаю, что если вы запустите исполняемый файл из командной строки, он будет продолжать принимать STDIN и давать в STDOUT Выходы, пока не скажет, что бросить ()
Grant
1

голосов
3

ответ
93

Просмотры

Производительный способ очистить излишние старые данные в текстовом файле

У меня есть некоторые текстовые файлы, которые мне нужно, чтобы иметь возможность писать на лету, и довольно часто. Эти файлы могут быть довольно большими по размеру, но текст внутри них может быть совершенно различным между двумя итерациями. Это означает, что текст может быть короче, чем раньше было. Что, если я не очистить старые данные первого, будет в конечном итоге в смеси старые данные, добавленными в конце моих новых данных. Как указано в документации MSDN. Если вы перезаписать более длинную строку (например, «Это испытание метода OpenWrite») с более короткой строкой (например, «вторым заходом»), файл будет содержать смесь строк ( "Второй RunTest методы OpenWrite «). Однако документы не указать способ исправить или даже предотвратить это. В настоящее время я делаю следующее: File.WriteAllText (путь, String.Empty); используя (файл потока = File.OpenWrite (путь)) {file.write (dataToWrite, 0, dataToWrite.Length); } Где я опорожнить содержимое существующего файла с помощью File.WriteAllText (путь, String.Empty), а затем записать новое содержимое в файл. Однако он чувствует, как отходы должны идти через весь файл дважды (первый, чтобы очистить его, а затем записать новые данные в нем). Есть ли способ, где я могу переписать старые данные с моими новыми данными, и идти только над «остались» данные и ясно, что, не выходя за весь файл в два раза? Это не обязательно должны использовать stream.write. Любая альтернатива, которая выполняет свою работу и быстрее приемлемо. Результаты После запуска 100,000 итераций написания 2441 кбайта данных (и удаления всех старых данных) 5 раз на разных машинах, следующие результаты вышли: Мой оригинальный метод нашел выше взял 4.75589 мс в среднем. ответ, используя WriteAllBytes Anderson Пиментелом принял 4.28946 мс в среднем. быстрый ответ Dark Сокола с помощью file.write и усечения взял 4.14433 мс в среднем (и это самый быстрый / самый последовательный с этим). File.Delete старый файл и создать новый файл, используя FileStream.Write взял 5.31883 мс в среднем. Ответ MeJustAndrew поживает выше, но многопоточный взял 8.12726 мс в среднем. (Хотя я должен признать, что это вполне может быть из-за плохую реализацию мною, я ни в коей мере очень опытных в многопоточном) отмечает, что эти результаты применимы к моей реализации и аппаратному обеспечению. Результаты могут варьироваться в зависимости от различных аппаратных средств. Запись и -срезающая взял 4.14433 мс в среднем (и это самый быстрый / самый последовательный с этим). File.Delete старый файл и создать новый файл, используя FileStream.Write взял 5.31883 мс в среднем. Ответ MeJustAndrew поживает выше, но многопоточный взял 8.12726 мс в среднем. (Хотя я должен признать, что это вполне может быть из-за плохую реализацию мною, я ни в коей мере очень опытных в многопоточном) отмечает, что эти результаты применимы к моей реализации и аппаратному обеспечению. Результаты могут варьироваться в зависимости от различных аппаратных средств. Запись и -срезающая взял 4.14433 мс в среднем (и это самый быстрый / самый последовательный с этим). File.Delete старый файл и создать новый файл, используя FileStream.Write взял 5.31883 мс в среднем. Ответ MeJustAndrew поживает выше, но многопоточный взял 8.12726 мс в среднем. (Хотя я должен признать, что это вполне может быть из-за плохую реализацию мною, я ни в коей мере очень опытных в многопоточном) отмечает, что эти результаты применимы к моей реализации и аппаратному обеспечению. Результаты могут варьироваться в зависимости от различных аппаратных средств. (Хотя я должен признать, что это вполне может быть из-за плохую реализацию мною, я ни в коей мере очень опытных в многопоточном) отмечает, что эти результаты применимы к моей реализации и аппаратному обеспечению. Результаты могут варьироваться в зависимости от различных аппаратных средств. (Хотя я должен признать, что это вполне может быть из-за плохую реализацию мною, я ни в коей мере очень опытных в многопоточном) отмечает, что эти результаты применимы к моей реализации и аппаратному обеспечению. Результаты могут варьироваться в зависимости от различных аппаратных средств.
remy_rm
1

голосов
2

ответ
52

Просмотры

Пользуется Pattern / Сличитель более эффективной, чем перекручивание через строку и ищет героев?

Я работаю над проектом, который будет выглядеть через Java файл для конкретного метода и выводом линий, что метод занимает в файл. Я уже использую Узор и Искатель, чтобы найти метод, но тогда я перебирать символы в строке, чтобы найти соответствующие фигурные скобки. Мой вопрос, будет ли эффективнее использовать другой шаблон / Искатель, чтобы найти фигурные пары фигурных скобок? Вот метод, который находит диапазон линии для метода, если это помогает: String линии; INT currentLineNumber = 0; INT methodStart = 0; INT methodEnd = 0; INT braceCount = 0; Сличитель согласовань; в то время как ((строка = lineReader.readLine ())! = NULL) {// Необходимо установить значение линии здесь, потому что ReadLine () увеличивает номер строки currentLineNumber = lineReader.getLineNumber (); согласовани = p.matcher (линия); // инициализация Matcher с шаблоном, если (Matcher.find ()) {// если линия имеет регулярное выражение хит, сохранить номер строки в качестве CurrentLine methodStart = currentLineNumber; } Если (! CurrentLineNumber> = methodStart && methodStart = 0) {// убедитесь, что мы нашли способ (INT I = 0; я <line.length (); я ++) {// итерацию символов в линия / * Начните с braceCount 0. Когда вы найдете исходную скобку, приращение. * Когда вы найдете конечную фигурную скобку, декремент. Когда braceCount снова достигает 0, * вы будете знать, что вы достигли конца метода. * * Может, возможно, уменьшить сложность / повысить эффективность с помощью набора шаблонов / matchers * найти брекеты. * / Если (line.charAt (я) == '{') braceCount ++; если (line.charAt (я) == '}') {braceCount--; если (braceCount == 0) {methodEnd = currentLineNumber; вернуть новый ИНТ [] {methodStart, methodEnd}; }}}}} Шара (я) == '}') {braceCount--; если (braceCount == 0) {methodEnd = currentLineNumber; вернуть новый ИНТ [] {methodStart, methodEnd}; }}}}} Шара (я) == '}') {braceCount--; если (braceCount == 0) {methodEnd = currentLineNumber; вернуть новый ИНТ [] {methodStart, methodEnd}; }}}}}
Chandler Davis
0

голосов
2

ответ
22

Просмотры

Optimize speed of Mysql JOIN query

I have 2 tables called T1 made of 1.6mln of rows and T2 made of 4.6mln of rows with with one-to-many relationship. The CREATE STMT of T1 is: CREATE TABLE `T1` ( `field_1` text, `field_2` text, `field_3` decimal(10,6) DEFAULT NULL, `field_4` decimal(10,6) DEFAULT NULL, `field_4` decimal(10,6) DEFAULT NULL, `field_5` text, `field_6` text, `field_7` text, `field_8` double DEFAULT NULL, `field_9` text, `field_10` text, `field_11` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; The CREATE STMT of T2 is: CREATE TABLE `T2` ( `field_1` int(11) DEFAULT NULL, `field_2` text, `field_3` text, `field_4` text, `field_5` text, `field_6` text, `field_7` text, `field_8` text, `field_9` text, `field_10` text, `field_11` text, `field_12` text, `field_13` text ) ENGINE=InnoDB DEFAULT CHARSET=latin1; I don't have set any kind of indexes or any particular constraints for now, but the T1.field_1 should be my ideal key and can be joined with T2.field_2 field. If I decide to make a JOIN like: SELECT * FROM T1 JOIN T2 ON T1.field_1=T2.field_2 WHERE T1.=2130100; The benchmark is really high. This is the EXPLAIN: So I'm just trying to understand what could be some possibile improvements: Add some index Change the type of the input fields? Maybe add a primary key?
UgoL
1

голосов
0

ответ
156

Просмотры

многократный запрос против пакетного исполнения с Mybatis весной

У меня есть один вопрос. многократный запрос против партии с mybatis в Спринг примере) Случай 1. allowmutiquery = TRUE и одного вызова вызова «mutiquery»; обновление ... набор .... случай 2. цикл несколько вызовов и пакетное выполнение для (;;) {Вызывают «партию»; } Обновления ... установлен .... что так лучше?
J.K.R
1

голосов
2

ответ
71

Просмотры

Tensorflow умножение констант производительность медленнее, чем tf.random

Я использую Tensorflow для нек-DL вычисления, и я бегу в поведении я не понимаю. Я проверяю умножение квадратной матрицы сам по себе: tf.matmul (а, а): когда матрица создается с tf.constant, когда матрица случайным образом инициализируется при каждом запуске Я ожидаю, что первый случай должен иметь некоторые накладные расходы для передачи исходных данных, 100 МБ (5000x5000 матрицы с использованием float32), но тогда исполнением второго случая должна быть немного медленнее из-за случайную инициализацию при каждом запуске. Однако то, что я вижу в том, что умножение на константу гораздо медленнее, даже на последовательных прогонов в одной и той же сессии. Код импорта tensorflow в ТФ импорта NumPy как нп из timeit импорта timeit импорта зева os.environ [ "TF_CPP_MIN_LOG_LEVEL"] = "2" # NoSpam SIZE = 5000 NUM_RUNS = 10 а = нп.
Anna-Chiara Bellini
1

голосов
1

ответ
483

Просмотры

Searching 13 million records using full text search with additional conditions

Performance issue while doing SQL Server full text search with additional conditions. (SQL Server 2012) I am trying to filter the data based on search filters list (table value parameter), which will return all the records for match filters and single record for the filter doesn't have any record from tables. Full text search index is already on table Names for column SNAME. In stored procedure, table type parameter SearchFilter is used to pass list of name and address info. Both tables have more than 14 million records, when we execute the procedure with 1000 unique records passed in filters list it took around 7 minutes to return the result (1400 records). Filter criteria is: contains(name) and streetaddress, city, state, zip exact match. Is there any alternate to avoid while loop as SQL Server CONTAINS function required string value or variable? CREATE TABLE [dbo].[Names] ( [ID] [int] IDENTITY(1,1) NOT NULL, [UIN] [varchar](9) NULL, [SNAME] [varchar](500) NULL, CONSTRAINT [PK_Names] PRIMARY KEY CLUSTERED ([ID] ASC) ) CREATE TABLE [dbo].[ADDRESSES] ( [UIN] [varchar](9) NULL, [STREET1] [varchar](100) NULL, [STREET2] [varchar](50) NULL, [CITY] [varchar](30) NULL, [STATE] [varchar](2) NULL, [ZIP] [varchar](10) NULL ) ON [PRIMARY] CREATE TYPE [dbo].[SearchFilter] AS TABLE ( [UIN] [varchar](40) NULL, [SNAME] [varchar](max) NULL, [StreetAddress] [varchar](max) NULL, [City] [varchar](max) NULL, [State] [varchar](50) NULL, [Zip] [varchar](20) NULL ) -- Stored procedure logic DECLARE @filterList AS [dbo].[SearchFilter] DECLARE @NoOfRows INT, @counter INT = 0 SET @NoOfRows = (SELECT COUNT(1) FROM @filterList) DECLARE @result TABLE (UIN varchar(40), NAME varchar(500), StreetAddress varchar(1000), Zipcode varchar(20), State varchar(20), City varchar(1000), IsRecordFound varchar(50) ); WHILE (@NoOfRows > @counter) BEGIN DECLARE @SearchName VARCHAR(4000) SET @SearchName = (SELECT '"'+SNAME+'"' FROM @filterList ORDER BY SNAME OFFSET @counter ROWS FETCH NEXT 1 ROWS ONLY) --Start: Process to Select Records ;WITH Filter_CTE AS ( SELECT SNAME, StreetAddress, City, State, ZipCode FROM @filterList ORDER BY SNAME OFFSET @counter ROWS FETCH NEXT 1 ROWS ONLY ) INSERT INTO @result (UIN, NAME, STREETADDRESS, CITY, STATE, ZIPCODE, PHONE, IsRecordFound) SELECT DISTINCT en.UIN, ISNULL(en.SNAME, Filter_CTE.SNAME), Filter_CTE.StreetAddress, Filter_CTE.ZipCode, Filter_CTE.state, Filter_CTE.City, IIF(en.UIN IS NULL, 'Not Found', 'Found') AS IsRecordFound FROM dbo.Names en INNER JOIN dbo.ADDRESSES ea ON en.UIN = ea.UIN RIGHT JOIN Filter_CTE ON ea.ZIP = Filter_CTE.Zip AND ea.STATE = Filter_CTE.State AND ea.CITY = Filter_CTE.City AND (ISNULL(ea.STREET1, '') + ' ' + ISNULL(ea.STREET2, '')) = Filter_CTE.StreetAddress AND CONTAINS(en.SNAME,@SearchName) --END SET @counter += 1 END SELECT UIN, NAME, STREETADDRESS, CITY, STATE, ZIPCODE, PHONE FROM @result
K.Engineer
1

голосов
0

ответ
205

Просмотры

TensorFlow conv2d медленно по сравнению с другими

Я пытаюсь использовать ТФ, чтобы сделать некоторую фильтрацию. У меня 60 изображений размера 1740 х 2340 и Guassian фильтра с размером 16 х 16. Я управлял conv2d, как махи = [1,1,1,1] data_ph = tf.constant (данные, tf.float32) filt_ph = тс .constant (ФИЛТО, tf.float32) data_format = ко 'NCHW' = tf.nn.conv2d (data_ph, filt_ph, шагает, 'ЖЕ', data_format = data_format), где data_ph = filt_ph = Я пытался использовать заполнители вместо констант и я также пытался использовать читатель, такие как tf.FixedLengthRecordReader. Я повторил эксперименты несколько раз в перспективе. Первые работает в 12 секунд и subsequents работать в 4-х секунд с использованием констант и 5 секунд с использованием заполнителей. Тот же самый эксперимент побежал в mxnet занимает всегда 1,6 сек и в MatLab 1.5 секунды. Во всех случаях я размещая вычисления на GPU, а 8 Гб Quadro K5200.
user3347617
1

голосов
1

ответ
58

Просмотры

How does python pre-process the script and read files efficiently for fixed subset of large amount of images

Мне нужно прочитать подмножество файлов с большим количеством файлов. Чтобы прочитать часть файлов, мы сначала предоставить список индексов, чтобы получить имена файлов, а также использовать некоторые классы питона читать подмножество файлов с использованием имен файлов. Скажем, у нас есть 15000 изображений с именами файлов, сохраненных в списке image_filenames, и мы хотели бы, чтобы случайно прочитали 100 изображений, используя список индексов image_indices. Если мы жестко закодировать некоторые случайные image_indices (например image_indices = [28457, 25862, 9399, ..., 15365]), кажется, что питон может предварительно обработать Питон инструкции по получению списка image_filenames [индекс] для все индекс в image_indices и искать все изображения эффективны со случайным образом жестко закодированными показателями, занимает около 0,5 секунд. image_indices = [28457, 25862, 9399, ..., 15365] read_image (image_filenames [индекс]) для индекса в image_indices # Эта строка занимает 0,5 секунды Теперь мы используем numpy.random.choice (15000, 100) для генерации image_indices. Тогда мы получим подмножество имен файлов с использованием image_indices, и читать изображения, используя эти имена файлов. Это займет около 3 секунд. image_indices = numpy.random.choice (15000, 100) read_image (image_filenames [индекс]) для индекса в image_indices # Эта строка занимает 3 секунды Хотя я просто обеспечить лишь жестко закодированные индексы (не имена файлов), является Python, что умный предварительно -процесс все инструкции, я написал и эффективно искать все файлы заранее, чтобы достичь 0,5 секунды (в то время как он занимает 3 секунды для не жестко закодированных индексов)? Что такое магия / теория позади? Верно ли, что существует физическое ограничение (например, жесткий диск, OS дизайн), что невозможно прочитать 100 случайных статуи из 15000 изображений в 0,5 секунды? EDIT Примечание: Время измерения чисто для зацикливания в 100 раз для только read_image функции. Он не учитывает время, необходимое для построения индексов (например, numpy.random.choice)
chesschi
1

голосов
1

ответ
231

Просмотры

Сетевая активность от crashlytics, когда мое приложение приостановлено

Я вижу следующую сетевую активность, когда мое приложение находится в приостановленном состоянии. Эти URL-адреса, которые Crashlitics бьет: https://api.crashlytics.com/spi/v1/platform/android/apps/ https://e.crashlytics.com/spi/v2/events Я прилагаю трассировку для / события POST запрос от профилировщика. Почему Crashlytics делает так много запросов в состоянии паузы? Будет ли это иметь какое-либо влияние на использование аккумуляторов приложения в состоянии паузы? Crashlytics Android SDK версии 1.4.1.19
Pradeep Reddy
1

голосов
0

ответ
164

Просмотры

Oracle Automated Статистика Коллекция не Анализ некоторых таблиц

Я включил автоматизированный сбор статистики в моей базе данных. выберите CLIENT_NAME, статус от dba_autotask_client, где статистика автооптимизатора коллекции "имя_клиента = статистика коллекции ВКЛЮЧЕНО автооптимизатора Но когда я опрашивать user_tables, я вижу лишь некоторые из таблиц анализируемыми.
oradbanj
1

голосов
0

ответ
61

Просмотры

Performance of using a matrix as vector index

В моем коде у меня есть медленная часть которого идея можно резюмировать в следующем коротком примере: A = (10,5 Рэнди); % Случайная 5 × 5 матрица, содержащая целые числа в диапазоне от 0 до 10 В = RAND (10,1); % Случайные 10 × 1 вектор, содержащий значения в диапазоне от 0 до 1 C = B (A); % Новый 5 × 5 матрица, состоящая из элементов из B, индексированные с помощью В моем случае, матрица А размером 1000 × 1000, В представляет собой 500 × 1 вектор и С также 1000 × 1000. Учитывая, что это третья строка в цикле, где А является постоянным и B обновляется каждую итерацию, как я могу дополнительно улучшить производительность скорости? Согласно просмотра профиля 75% выполнения кода на этом одной строке. Как и следовало ожидать, используя для цикла для этой операции происходит гораздо медленнее (10x для 1000 × 1000 матрицы): АА = A (:); % Преобразование матрицы в вектор для к = 1: Длина (АА)% Цикл через этот вектор и использовать его в качестве индекса D (K) = B (АА (к)); Конец Е = Reshape (D, 5,5); % Переформуйте вектора матрицы 5x5 Любые идеи, чтобы оптимизировать это? Edit: Сценарий, используемый для измерения производительности: N = 1500; А = Randi (500, Н); АА = А (:); D = нули (N, N); В = Rand (500,1); f1 = @ () VectorIndex (А, В); timeit (f1,1) 2 = @ () LoopIndex (АА, B, N); timeit (f2,1) функция С = VectorIndex (А, В) С = В (А); Конец функции D = LoopIndex (АА, B, N) D = нули (N, N); к = 1: длина (АА) Д (к) = В (АА (к)); Конец D = Reshape (D, N, N); конец 1) функция С = VectorIndex (А, В) С = В (А); Конец функции D = LoopIndex (АА, B, N) D = нули (N, N); к = 1: длина (АА) Д (к) = В (АА (к)); Конец D = Reshape (D, N, N); конец 1) функция С = VectorIndex (А, В) С = В (А); Конец функции D = LoopIndex (АА, B, N) D = нули (N, N); к = 1: длина (АА) Д (к) = В (АА (к)); Конец D = Reshape (D, N, N); конец
Knippie
1

голосов
0

ответ
221

Просмотры

Создание жестких ссылок в Докер контейнере занимает много времени в первый раз

Я создаю жесткие ссылки всех файлов в директории (некоторые 500MB) в Докер контейнере, используя следующую команду: ср -al назначения источника Интересно, что когда я выдаю вышеупомянутую команду в первый раз (то есть, когда нет жестких ссылок для каждого файла в этом каталоге), это занимает довольно много времени. Это не тот случай, когда я выполняю вышеуказанную команду еще раз, чтобы создать жесткие ссылки из одинаковых файлов в другом месте назначения. Это также не тот случай, когда я делаю это в моем Docker хозяине (даже если это первые, что жесткие ссылки создаются). Мой докер контейнер использует overlay2 в качестве драйвера для хранения. Вот мои докер информация Выходные контейнеры: 61 Продолжительность: 1 Приостановлено: 0 Остановлено: 60 Изображения: Версия 142 Сервер: 1.13.1 Storage Driver: overlay2 Резервное Filesystem: ExtFS Поддержка d_type: истинно Native Overlay Diff: верно Logging Driver: journald драйвер контрольной группы : STYG: PZCA: FMHL: FLCU: N7VG: Z463: KYQF: QVHO: KWKP: FHTY: Euba: QBUK Докер корневой директории: / Var / Библиотека / Докер Режим отладки (клиент): ложный режим отладки (сервер): ложные регистрации: HTTPS : //index.docker.io/v1/ экспериментальной: ложные Незащищенные реестры: 127.0.0.0/8 Живого Восстановления Enabled: ложные реестры: docker.io (безопасный), registry.fedoraproject.org (за дополнительную плату), registry.access.redhat .com (за дополнительную плату), docker.io (безопасный) Edit: Если удалить все жесткие ссылки, а затем вопрос выше команды сП снова, это быстро снова. Уф! Я не уверен, что это вызывает или откуда я должен начать смотреть с. docker.io (за дополнительную плату), registry.fedoraproject.org (за дополнительную плату), registry.access.redhat.com (за дополнительную плату), docker.io (безопасный) Edit: Если удалить все жесткие ссылки, а затем вопрос выше команды сП опять же, это быстро снова. Уф! Я не уверен, что это вызывает или откуда я должен начать смотреть с. docker.io (за дополнительную плату), registry.fedoraproject.org (за дополнительную плату), registry.access.redhat.com (за дополнительную плату), docker.io (безопасный) Edit: Если удалить все жесткие ссылки, а затем вопрос выше команды сП опять же, это быстро снова. Уф! Я не уверен, что это вызывает или откуда я должен начать смотреть с.
pranavk
1

голосов
0

ответ
376

Просмотры

Как получить общее использование процессора в качестве одного значения в Android?

Я довольно новый для Android, и я ищу, чтобы отслеживать и регистрировать общее использование ресурсов процессора телефона через приложение, которое я делаю. Поэтому я хотел бы иметь возможность получить общее использование процессора в качестве значения%, как 50%, 100% и т.д., например, как диспетчер задач в Windows, показывает использование% процессора, или как другие программы имеют нагрузка% CPU (например, как указано в этом вопросе: Как найти загрузку процессора любого Android устройства программно) Я просмотрел несколько других вопросов, связанной с переполнением стека, но я не смог найти ответы, которые говорят, могу ли я получить это использование процессора я искал как единое значение, которое можно хранить в базе данных и отслеживать с течением времени. Вот некоторые из других вопросов, я посмотрел на:
Yuerno
1

голосов
2

ответ
45

Просмотры

Есть ли таблица разделов Sql Server действительно может улучшить производительность выбора?

Я обнаружил, что выбрать производительность таблицы разделов ниже, чем оригинал. Есть ли таблица разделов Sql Server действительно может улучшить производительность выбора? Может кто-нибудь может дать мне несколько советов?
Mao.Ao
1

голосов
2

ответ
240

Просмотры

Java GC кучи PARAMS для G1

Я использую ниже параметров JAVA GC для Java 7. -Xmx12g -Xms12g -XX: + UnlockExperimentalVMOptions -XX: + UseG1GC -XX: MaxGCPauseMillis = 100 -XX: InitiatingHeapOccupancyPercent = 15 -XX: ConcGCThreads = 8 -XX: ParallelGCThreads = 16 - XX: G1ConcRefinementThreads = 17 -XX: + UseCompressedOops -XX: G1ReservePercent = 20 -XX: + ParallelRefProcEnabled -XX: + ExplicitGCInvokesConcurrent Я хотел бы знать, на какой% использования кучи мы должны увидеть GC получать сигнал. -XX: G1ReservePercent = 20: Сохранение 20% защищены. -XX: InitiatingHeapOccupancyPercent = 15: В связи с этим я думаю, что когда моя куча использовать 65% (всего 100% - 15 = 85, а 20% зарезервирован так 65%), то GC будет получить срабатывает. Является ли мое понимание правильно?
VJS
1

голосов
1

ответ
36

Просмотры

Прокрутка производительности

У меня есть пример, который содержит некоторые элементы. Когда я прокручивать так быстро элементы не отображаются и медленно загружаются. Является ли это ошибка или любая другая проблема? Мой HTML структура: Это заголовок сайта Hello World я создал пример. Вот ссылка. Вы должны проверить его с помощью мобильного устройства.
Kh Shuren-Erdene
1

голосов
1

ответ
302

Просмотры

SQL Server Cannot Build Execution Plan

Я использую Microsoft SQL Server 2016 Enterprise с пакетом обновления 1: Ядро на основе лицензирования (64-разрядная версия) Версия 13.0.4411.0 и у меня есть очень странное проблема, я не знаю, как решить. У меня есть (правда, довольно большой) запрос, который объединяет более 100 таблиц. Я написал оригинальное некоторое время назад и запустить запрос много раз с джойном на 100+ столов, но я хотел, чтобы ускорить его, так что я потратил много времени, настраивая его, изменяя все ЛЕВЫЙ вливается в ВНУТРЕННИЙ JOINS и декодирование всего спектра-присоединяется к точным значениям для спичек и добавления соответствующих индексов покрытия и т.д. присоединяется построено с помощью динамического SQL, так что число объединений является неточным, и моим тестированием с этим запросом настройки было меньше объединения таблиц (63). С 63-соединения таблиц Я был очень успешным при ускорении кода; он работает на долю времени оригинал взял. Но когда я реализовал код и попытался запустить 100+ таблицы, аналогичной присоединиться запросом, SQL только работает навсегда (он используется, чтобы занять несколько минут, теперь я должен был убить его после того, как целый день подряда). Ничего, что я изменил бы логично сделать код медленнее. Я добавил некоторые полезные уникальные индексы облицовочных, изменился некоторый диапазон присоединяется к точному матч присоединяется, как A.Field1 между B.FieldA и B.FieldB к A.Field1 = B.Field1 И все изменился ВЛЕВО вливается в INNER JOIN и (данные очищенах до таких, что все строки будут иметь матч во всех таблицах, так что «ЛЕВЫЙ» больше не было необходимости). Обычно это хорошо ... SQL иногда делает неожиданные вещи ..., я могу генерировать предполагаемый план выполнения и попытаться выяснить, что пошло не так. Но SQL прямо вверх не может генерировать план выполнения запроса для запроса. Он работает навсегда. Я' ве пытались обновить статистику и работает с (QUERYTRACEON 9481) использовать старый план выполнения компилятор, но и не помогло. Вот сумасшедшая часть: после того, как много испытаний я абсолютно уверен, что это только план выполнения, который занимает много времени, и что фактическое выполнение кода происходит очень быстро. Ручное удаление включается, пока он не работает, я получил его, чтобы создать план выполнения после нескольких часов. Идущие тот же код занимает столько же времени, как только генерируя предполагаемый план выполнения. План значительно проще и стоит гораздо меньше, чем старая версия с ЛЕВОЙ соединения и между операторами (которые, замечу, работает менее чем за 5 минут). С точки зрения «Запрос стоимости», если я генерировать план выполнения для обоих, 98% от стоимости на старом коде и 2% на новый код. Но старый план генерирует в течение нескольких секунд, и я не могу даже получить план для создания нового более эффективного кода со всеми стыками включен. Я никогда не работать в такой ситуации, как это, и я вроде на кирпичной стене, как отлаживать ... Я не знаю, как ускорить выполнения планировщика SQL в. Это вне моей компетенции. Если бы это было просто вопрос запрос слишком сложным, я думаю, что исходный код будет видеть этот же вопрос, так как это намного сложнее все вокруг. Это, кажется, что-то еще, как ошибка, которая применяется только к большому количеству внутренних соединений, но не много слева присоединяется или ... Я понятия не имею ... Любая помощь будет оценена. м вид на кирпичную стену, как отлаживать ... Я не знаю, как ускорить выполнения планировщика SQL в. Это вне моей компетенции. Если бы это было просто вопрос запрос слишком сложным, я думаю, что исходный код будет видеть этот же вопрос, так как это намного сложнее все вокруг. Это, кажется, что-то еще, как ошибка, которая применяется только к большому количеству внутренних соединений, но не много слева присоединяется или ... Я понятия не имею ... Любая помощь будет оценена. м вид на кирпичную стену, как отлаживать ... Я не знаю, как ускорить выполнения планировщика SQL в. Это вне моей компетенции. Если бы это было просто вопрос запрос слишком сложным, я думаю, что исходный код будет видеть этот же вопрос, так как это намного сложнее все вокруг. Это, кажется, что-то еще, как ошибка, которая применяется только к большому количеству внутренних соединений, но не много слева присоединяется или ... Я понятия не имею ... Любая помощь будет оценена.
JoZ
1

голосов
1

ответ
28

Просмотры

*ngFor with local assignment with the async pipe and reducing number of subscriptions

I have code similar to the following in the template file of a custom Angular component I have written: {{domain.name}} . . . I've been reading this article and am wondering if I can take advantage of the *ngIf with local assignment discussed at the bottom of the page. I read this: Here we are creating a local template variable that Angular assigns the value from the Observable. This allows us to interact directly with our user Object without having to use the async pipe over and over. On this page and was wondering if I could take advantage of this so that I do not have to keep reusing the async pipe over and over again as I feel it is drastically reducing performance on my page. Thoughts? Thanks UPDATE I've been able to reduce most of the code to this fashion by wrapping ng-containers around blocks of code, for example: . . . Some of these domains have properties attached to them that are in the form of: property: Observable.from([true]); Anyone know what the above does?
User 5842
1

голосов
0

ответ
67

Просмотры

Hibernate найти по идентификатору медленнее, чем найти все

Итак, для начала, я работаю над приложением, с угловым передним концом, Java 8 промежуточного слоя и Oracle 12c задней части. Пользовательский интерфейс передает запрос на Java с помощью промежуточного программного обеспечения, промежуточного программного обеспечения REST оракула доступа через Hibernate. В моем приложении, у меня есть тип А лицо, которое имеет множество связей с другими сущностями. Я столкнулся с проблемой, когда делать Субъект менеджер .find для объекта А через его ID, запросы для некоторых из этих лиц принимают свыше 15 секунд. Кажется, специфичным для типа А когда субъект имеет отношение к определенному типу B сущности, и я попытался лениво и охотно выборка безрезультатно. Проблема сохраняется независимо от того, как он взял, и я вошел время вниз через все слои приложения, и замедляются именно, когда находят по идентификатору делается на уровне фасада. Тем не менее, если я находка всего запрос всех объектов типа А, то запрос завершается в течение разумного периода времени для числа лиц, в настоящее время в базе данных (то есть намного меньше, чем 15 секунд). Я попытался найти для подобных случаев и чтение документации, но я не могу найти вескую причину, почему это происходит. Надеясь кто-то с большим опытом гибернации, чем сам столкнулся с подобным вопросом, и может мне точку в правильном направлении. Будем рады более подробно остановиться в случае необходимости, но не совсем уверен, что происходит под капотом спящего режима, что бы объяснить такое поведение. Спасибо. [править] Спасибо за ответы, и приносим извинения за расплывчатость. Есть много вещей, которые повлияли на мою способность быть более тщательным, или получить точные заявления SQL, и т.д. Для тех, кто может найти это в далеком будущем,
Vizioso
1

голосов
2

ответ
46

Просмотры

MySQL сумма по производной таблицы быстрее, чем подытожить без него

Я не могу понять, почему первый запрос, который с помощью производной таблицы, происходит медленнее, чем второй. Моя таблица: CREATE TABLE `test` (` someid` двоичный (16) NOT NULL, `indexedcolumn1` INT (11) NOT NULL,` indexedcolumn2` INT (10) NOT NULL без знака, `data` INT (11) NOT NULL, КЛЮЧ `indexedcolumn1` (` indexedcolumn1`), КЛЮЧ `indexedcolumn2` (` indexedcolumn2`)) ДВИГАТЕЛЬ = InnoDB CHARSET = УМОЛЧАНИЮ utf8 Эта таблица содержит 4.514.856 строк Чем быстрее запрос: SELECT SUM (isSame) как такие же, СУММА (isDifferent) КАК Diff, СУММА (isNotSet) А.С. notSet, indexedcolumn1 FROM (SELECT, случай, когда t.indexedcolumn1 = t.data ТОГДА 1 ELSE 0 END AS isSame, случай, когда t.indexedcolumn1! = t.data ТОГДА 1 ELSE 0 END AS isDifferent, CASE Когда т. Данные = 0 THEN 1 ELSE 0 END AS isNotSet, indexedcolumn1 от теста при t-, ГДЕ t.indexedcolumn2> = 10000000) AS TempTable GROUP BY indexedcolumn1; Результат: 72 строк в наборе (4,70 сек) Чем медленнее запрос: SELECT SUM (случай, когда t.indexedcolumn1 = t.data ТОГДА 1 еще 0 концов) как такие же, СУММА (случай, когда t.indexedcolumn1 = t.data ТОГДА 1 ИНАЧЕ! 0 КОНЕЦ) кАК Diff, СУММА (случай, когда t.data = 0 THEN 1 ELSE 0 END) AS notSet, indexedcolumn1 от теста при t- ГДЕ t.indexedcolumn2> = 10000000 GROUP BY indexedcolumn1; Результат: 72 строк в наборе (5,90 сек) Я думал, вы должны избегать производной таблицы, когда ее можно. Даже EXPLAIN не дает никакого намека: для Query1: + ---- + ------------- + ------------ + ------ + ---------- ------ + ------ + --------- + ------ + --------- + --------- ------------------------ + | ID | SELECT_TYPE | стол | типа | possible_keys | ключ | key_len | ссылка | строки | Extra | + ---- + ------------- + ------------ + ------ + ---------- ------ + ------ + --------- + ------ + --------- + --------- ------------------------ + | 1 | ОСНОВНОЙ | | ALL | NULL | NULL | NULL | NULL | 2257428 | Использование временного; Использование FileSort | | 2 | DERIVED | т | ALL | indexedcolumn2 | NULL | NULL | NULL | 4514856 | Использование где | + ---- + ------------- + ------------ + ------ + ---------- ------ + ------ + --------- + ------ + --------- + --------- ------------------------ +, для запроса 2: + ---- + ------------- + ------- + ------- + -------------- ------------- + ------------ + --------- + ------ + ------ --- + ------------- + | ID | SELECT_TYPE | стол | типа | possible_keys | ключ | key_len | ссылка | строки | Extra | + ---- + ------------- + ------- + ------- + -------------- ------------- + ------------ + --------- + ------ + ------ --- + ------------- + | 1 | SIMPLE | т | индекс | indexedcolumn1, indexedcolumn2 | indexedcolumn1 | 4 | NULL | 4514856 | Использование где | + ---- + ------------- + ------- + ------- + -------------- ------------- + ------------ + --------- + ------ + ------ --- + ------------- + Я также попробовал тесты несколько раз, всегда с тем же результатом: Первый запрос был быстрее .... Но почему? Результаты одинаковы. EDIT: Я сделал дополнительный тест: я извлекал где положение. Даже тогда я получить лучшие результаты для первого запроса (поясните): + ---- + ------------- + ------------ + ------ + ---------- ----- + ------ + --------- + ------ + --------- + ---------- ----------------------- + | ID | SELECT_TYPE | стол | типа | possible_keys | ключ | key_len | ссылка | строки | Extra | + ---- + ------------- + ------------ + ------ + ---------- ----- + ------ + --------- + ------ + --------- + ---------- ----------------------- + | 1 | ОСНОВНОЙ | | ALL | NULL | NULL | NULL | NULL | 4514856 | Использование временного; Использование FileSort | | 2 | DERIVED | т | ALL | NULL | NULL | NULL | NULL | 4514856 | NULL | + ---- + ------------- + ------------ + ------ + ---------- ----- + ------ + --------- + ------ + --------- + ---------- ----------------------- + Объяснить запрос 2: + ---- + ------------- + ------- + ------- + -------------- - + ------------ + --------- + ------ + --------- + ------- + | ID | SELECT_TYPE | стол | типа | possible_keys | ключ | key_len | ссылка | строки | Extra | + ---- + ------------- + ------- + ------- + -------------- - + ------------ + --------- + ------ + --------- + ------- + | 1 | SIMPLE | т | индекс | indexedcolumn1 | indexedcolumn1 | 4 | NULL | 4514856 | NULL | + ---- + ------------- + ------- + ------- + -------------- - + ------------ + --------- + ------ + --------- + ------- + | + ---- + ------------- + ------- + ------- + -------------- - + ------------ + --------- + ------ + --------- + ------- + | + ---- + ------------- + ------- + ------- + -------------- - + ------------ + --------- + ------ + --------- + ------- +
mly
1

голосов
0

ответ
113

Просмотры

Распад MEM_LOAD_UOPS_RETIRED.L3_MISS события в Intel Бродуэлла-EP

Я пытаюсь сравнить согласованность и стоимость доступа памяти DRAM для приложения. Для этого, я имею в виду измерения (в частности MEM_LOAD_UOPS_RETIRED.L3_MISS) события L3_MISS и сравнить его с HITM события (в частности MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM и MEM_LOAD_UOPS_L3_MISS_RETIRED.REMOTE_HITM). Глядя на описание события L3_MISS в PERFMON странице (ссылка) я нашел следующее описание: Miss в последнем уровне (L3) кэша. Исключает Неизвестный источник данных. Исходя из этого определения у меня есть три вопроса: Означает ли это, в приведенном выше описании, что подсчет событий L3_MISS не включает в себя кросс-сокетов HITM события (так как источник неизвестен)? Я не мог найти более подробное описание в Intel SDM и ссылку на 2016 Optimization. Рассуждая далее, это значит, что все подкомпоненты L3_MISS - {LOCAL_DRAM, REMOTE_DRAM, REMOTE_FWD} также не включены в L3_MISS рассчитывать? Или мне не хватает какой-то определение неизвестного источника данных в Intel SDM? Заранее спасибо! PS: System Info - Бродуэлла E5 2660v4, используя PAPI, чтобы получить счетчик числа производительности
YetAnotherPseudoName
1

голосов
1

ответ
177

Просмотры

ДАГ кратчайший путь с весом на вершине / узел в Java

Это небольшое изменение на многих существующих алгоритмов, причем топологическая сортировка, как представляется, наиболее очевидный и эффективный ответ. Давайте рассмотрим пример, чтобы более ясно, что я имею в виду объяснить. У меня есть ДАГ, начиная с вершины А с 5 вершинных / узлами в E. Хочу найти кратчайший путь от А до Е, что каждый узел сам по себе взвешивается вместе с пути, в какой-то момент существует возможность каждый узел может иметь более чем на 1 взвешенное значение. Узлы могут иметь много переменных, таких как х, у и г. Эти входы взвешиваются на основе некоторого предпочтения предпочтения пользователя примера. Таким образом, у нас может быть взвешены в большей степени, чем х или г, и это учитывает «короткий» путь. Я приложил изображение, чтобы объяснить, что я хочу сделать. Какой самый лучший способ достижения этой цели? Причина для добавления веса к узлам, это предпочтение конкретного узла с помощью данного входа. В круговой диаграмме мы можем видеть, что Y взвешивается наиболее сильно с 50% предпочтения, поэтому мы бы Y * N, где N это число, чтобы вычислить вес. В D в прилагаемой диаграмме, х, уг будет {1, 0,6, 0,3} Изменить: на основе оригинального ответа, обновить описание. Упрощенная диаграмму и добавил новую круговую диаграмму, чтобы объяснить взвешивание.
pronane
1

голосов
1

ответ
274

Просмотры

Как добавить частное поле в класс с помощью bytebuddy

У меня есть класс, как этот общественный класс SampleClass {общественного недействительными startMethod (не Int нет) {// некоторые работы !! } Общественного недействительными endMethod (имя String) {// некоторые произведения !! }} Я использую советы для получения метрик этого методов. класс TimerAdvice общественности {@ Advice.OnMethodEnter статической силы ввести (@ метод Advice.Origin String) {если (method.equals ( "startMethod")) {// Метрики работы}} @ Advice.OnMethodExit статической силы выхода (@ Advice.Origin метод String) {если (method.equals ( "endMethod")) {// Метрики работы}}}} Я хочу, чтобы добавить метрики таймера (или любое поле) от @ Advice.OnMethodEnter до SampleClass и получить его от @Advice. OnMethodExit ли это может быть сделано? Я думаю, что мой вопрос ясен.
Shehan aklanka perera
1

голосов
0

ответ
148

Просмотры

QTextEdit и QPrintPreview медленно работает с большой HTML таблицы

Я пытаюсь создавать отчеты, как MS Access, и благодаря QTextEdit пример все работает очень хорошо. Но когда я открываю большой HTML-таблицу (около 5000 строк), она занимает около 35 секунд, чтобы загрузить таблицу - так это очень медленно. Как оптимизировать распечатку предварительного просмотра? Может загрузить только одну страницу и изменить текущую страницу в окне предварительного просмотра печати? Но я не могу найти, как получить доступ к кнопкам печати предварительного просмотра. Или, может быть, изменить что-то с моей HTML таблицы? #! / USR / бен / ENV питона импорт SYS из PyQt4 импорта QtCore, QtGui класса TextEdit (QtGui.QMainWindow): Защита __init __ (я, имя_файл = None, родитель = None): супер (TextEdit, самость) .__ INIT __ (родитель) self.setupFileActions () self.textEdit = QtGui.QTextEdit (сам) self.setCentralWidget (self.textEdit), если имя_файл Нет: имя_файл =»./test5000. 20, 20, 0) printer.setResolution (300) предварительный просмотра = QtGui.QPrintPreviewDialog (принтер, сам) preview.paintRequested.connect (self.printPreview) preview.exec_ () Защита PrintPreview (сам, принтер): self.textEdit.print_ (принтер), если __name__ == '__main__': приложение = QtGui.QApplication (sys.argv) mainWindows = [] для Fn в sys.argv [1:] или [Отсутствует]: TextEdit = TextEdit (п) textEdit.resize ( 1024, 768) textEdit.show () mainWindows.append (TextEdit) sys.exit (app.exec_ ()) Пример HTML-файл с изображениями здесь. При запуске скрипта он открывает HTML-файл (медленно), а затем меню Файл-> Предварительный просмотр запускает диалоговое окно печати предварительного просмотра. PrintPreview) preview.exec_ () Защиту PrintPreview (самость, принтер): self.textEdit.print_ (принтер), если __name__ == '__main__': приложение = QtGui.QApplication (sys.argv) mainWindows = [] для Fn в SYS. ARGV [1:] или [Отсутствует]: TextEdit = TextEdit (п) textEdit.resize (1024, 768) textEdit.show () mainWindows.append (TextEdit) sys.exit (app.exec_ ()) Пример HTML-файл с изображениями это здесь. При запуске скрипта он открывает HTML-файл (медленно), а затем меню Файл-> Предварительный просмотр запускает диалоговое окно печати предварительного просмотра. PrintPreview) preview.exec_ () Защиту PrintPreview (самость, принтер): self.textEdit.print_ (принтер), если __name__ == '__main__': приложение = QtGui.QApplication (sys.argv) mainWindows = [] для Fn в SYS. ARGV [1:] или [Отсутствует]: TextEdit = TextEdit (п) textEdit.resize (1024, 768) textEdit.show () mainWindows.append (TextEdit) sys.exit (app.exec_ ()) Пример HTML-файл с изображениями это здесь. При запуске скрипта он открывает HTML-файл (медленно), а затем меню Файл-> Предварительный просмотр запускает диалоговое окно печати предварительного просмотра. размер (1024, 768) textEdit.show () mainWindows.append (TextEdit) sys.exit (app.exec_ ()) Пример HTML-файл с изображениями здесь. При запуске скрипта он открывает HTML-файл (медленно), а затем меню Файл-> Предварительный просмотр запускает диалоговое окно печати предварительного просмотра. размер (1024, 768) textEdit.show () mainWindows.append (TextEdit) sys.exit (app.exec_ ()) Пример HTML-файл с изображениями здесь. При запуске скрипта он открывает HTML-файл (медленно), а затем меню Файл-> Предварительный просмотр запускает диалоговое окно печати предварительного просмотра.
pythoff
1

голосов
1

ответ
167

Просмотры

Лучшие способы обнаружения, какие пропускная способность имеет пользователя? [Дубликат]

Этот вопрос уже есть ответ здесь: Как определить скорость интернета в JavaScript? 9 ответов я пытаюсь оптимизировать работу приложений на основе типа пропускной способности пользователь имеет. Например, если пользователь находится на очень медленном соединении 2G, я бы оказывать меньше графики и меньше содержания, для высокоскоростных соединений, я бы включать в себя видео, анимации и т.д. Есть JS библиотеки, которые позволяют это сделать? Что лучшая практика?
antonpug
1

голосов
1

ответ
49

Просмотры

Azure Сайт Куда HTMLLog Анализ показывает, Always On с высоким временем отклика

Мы развернули нашу WebAPI как лазурный сайт под стандартный планом и включены всегда. После того, как несколько памяти и процессора предупреждений мы решили проверить журналы по xyz.scm.azurewebsites.net. Кажется, Always ON имеет высокое время отклика. Может ли это быть причиной высокой проблемы памяти и процессора. Иногда предупреждения приходят, когда нет даже использовать систему автоматической и решительность в течение 5 минут.
Anshulee
1

голосов
0

ответ
554

Просмотры

Automapper первый выступ IQueryable.ProjectTo слишком медленно

У меня есть классы DTO: общественный класс PackageDto {общественный MemberDto приемник {получить; задавать; } Общественного MemberDto Отправитель {получить; задавать; } Общественного DocflowDto Документооборот {получить; задавать; } Общественного DocflowTypeOption DocflowTypeId {получить; задавать; } Публичная строка кода {получить; задавать; } Общественного Guid? DocGuid {получить; задавать; }} Общественного класса LightPackageDto {общественного DocflowDto Документооборот {получить; задавать; } Общественного DocflowTypeOption DocflowTypeId {получить; задавать; } Публичная строка кода {получить; задавать; } Общественного Guid? DocGuid {получить; задавать; }} Общественного класса MemberDto {публичная строка prop1 {получить; задавать; } Общественного EntityTypeOption prop2 {получить; задавать; } Публичная строка Prop3 {получить; задавать; } Публичная строка Prop4 {получить; задавать; } Публичная строка Prop5 {получить; задавать; } Общественного PersonDto директор {получить; задавать; } Публичная строка CompanyShortName {получить; задавать; } Публичная строка CompanyFullName {получить; задавать; } Публичная строка CompanyPrefix {получить; задавать; }} DocflowDto имеет 3 простых свойств типа и, по прогнозам, сглаживая. PersonDto имеет 3 простых свойств типа и проецируется уплощение слишком Mapping правила: CreateMap (); CreateMap () .ForMember (приемник => dest.Prop1, опт => opt.MapFrom (SRC => src.Employee.Prop1)) .ForMember (приемник => dest.Prop2, опт => opt.MapFrom (SRC => src.Prop2)) .ForMember (приемник => dest.Prop3, опт => opt.MapFrom (SRC => src.Employee.Prop3)) .ForMember (приемник => dest.Prop4, опт => opt.MapFrom (SRC => src.Employee.Prop4)) .ForMember (приемник => dest.Prop5, опт => opt.MapFrom (SRC => src.Employee.Prop5)) .ForMember (приемник => dest.Director, опт => неавтоматического , MapFrom (SRC => src.Employee.Director)) .ForMember (приемник => dest.CompanyShortName, опт => opt.MapFrom (SRC => src.Company.CompanyShortName)) .ForMember (приемник => dest.CompanyFullName, опт => opt.MapFrom (SRC => src.Company.CompanyFullName)) .ForMember (приемник => dest.CompanyPrefix, опт => opt.MapFrom (SRC => src.Company.Prefix)); CreateMap () .ForMember (приемник => dest.Sender, опт => opt.MapFrom (SRC => src.Sender)) .ForMember (приемник => dest.Receiver, опт => opt.MapFrom (SRC => SRC. приемник)) .ForMember (приемник => dest.Docflow, опт => opt.MapFrom (SRC => src.Docflow)) .ForMember (приемник => dest.DocGuid, опт => opt.MapFrom (SRC => SRC. Files.FirstOrDefault () DocGuid)). CreateMap () .ForMember (приемник => dest.Docflow, опт => opt.MapFrom (SRC => src.Docflow)) .ForMember (приемник => dest.DocGuid, опт => opt.MapFrom (SRC => SRC. Files.FirstOrDefault () DocGuid)). Тогда тесты: // быстро вар lightEntity = ждут _db.Packages.Where (р => p.PackageGuid == packageGuid) .ProjectTo () FirstOrDefaultAsync ();. // быстро (_db.GetPackage сделать запрос всем необходимым включает в себя) вар объект = ждут _db.GetPackage (packageGuid); вар entityDto = AutoMapper.Mapper.Map (юридическое лицо); // первый запуск слишком медленный результат вар = ждут _db.Packages.AsNoTracking () Где (р => p.PackageGuid == packageGuid) .ProjectTo () FirstOrDefaultAsync ()..; 1) Так что, если я проецируюсь LightPackageDto (без проекций членов) все в порядке. 2) Если я возвращаю объект вручную из EF с включает в себя, а затем я делаю отображения для «в памяти» лица все в порядке тоже 3) Если я хочу Automapper делает «Выбрать» применяя запрос ProjectTo я всегда сразу получить заморозить около 2-3 сек. Но замораживание появляется только один первый раз. Зачем? И еще один вопрос. Я вижу, в результате SQL оператора выбора всех столбцов всех касающихся таблиц. Я должен видеть только столбцы, необходимые для проецирования назначения. Почему все там? Я должен видеть только столбцы, необходимые для проецирования назначения. Почему все там? Я должен видеть только столбцы, необходимые для проецирования назначения. Почему все там?
vitm
1

голосов
0

ответ
76

Просмотры

Внутренняя связь статических или константных определения в заголовочных файлах C ++ (код наворотов, потребление памяти)

Я сделал несколько тестов с лязгом. I'am работает на очень большую базе кода и у нас есть много постоянных определения строк, которые отображаются в пользовательском интерфейсе (для простоты я опускаем механизм перевода, позволяет предположить, наш пользовательский интерфейс является только на английском языке). Вариант 1 в заголовке: Const символ * Const AUTHORNAME = "Hello World"; Каждый модуль перевода будет иметь копию этой строки. После связывания, полученный исполняемый файл включает в себя только один «Hello World» строку (вы можете проверить, что в шестнадцатеричном редакторе). Вариант 2 в заголовке:. Const станд :: строка AUTHORNAME ( «Hello World»);»Каждый модуль перевода будет иметь копию„строки Hello World“(вы можете искать строку в шестнадцатеричном редакторе) После связывания, то полученный исполняемый файл включает в себя только один «Hello World» строка (вы можете проверить, что в шестнадцатеричном редакторе тоже). Но что-то раздражает, происходит: для каждой отдельной единицы перевода, который имеет зависимость в файл заголовок, который определяет константную зЬй :: строки создается объект станда :: строка во время инициализации программы. Я написал небольшой тестовый класс в нашем исходном коде, который имеет вектор 1 размера МБ. Определение статической переменной этого тестового класса в заголовке, который известен большим количеством ЕП увеличивает наше время выполнения памяти от 130 МБ до 2 ГБ. Может кто-нибудь объяснить мне в деталях, что происходит под капотом? Имеет Вариант 1 такое же поведение? Означает ли это, что во время инициализации программы для каждого блока перевода, который включает в себя заголовок с константным символом * указатель сопзЬ памяти выделяется, как это для станд :: строки? ----- Edit ---- Я только что сделал еще одно испытание: я определил в заголовочном файле точно одна переменная: Const символ * Const stringOne = «Hello World!
CppMino
1

голосов
3

ответ
81

Просмотры

медленный запрос MySQL при использовании CONCAT и FileSort

Все запросы на эту систему быстро, за исключением, если добавить «Recent Status» и / или «Изменения статуса (расширенный)» для моего поиска. Кандидаты Страница с Re4cent Статус выбран запрос из медленного журнала. ВЫБОР SQL_CALC_FOUND_ROWS candidate.candidate_id КАК candidateID, candidate.candidate_id А.С. exportID, candidate.is_hot AS isHot, candidate.date_modified А.С. dateModifiedSort, candidate.date_created А.С. dateCreatedSort, ЕСЛИ (candidate_joborder_submitted.candidate_joborder_id, 1, 0) в представленном виде, ЕСЛИ (attachment_id, 1 , 0) КАК attachmentPresent, candidate.first_name AS Firstname, candidate.last_name AS LastName, candidate.city AS города, candidate.state AS состояние, candidate.key_skills А.С. keySkills, owner_user.first_name А.С. ownerFirstName, owner_user.last_name AS ownerLastName, CONCAT ( owner_user.last_name, owner_user.first_name) А.С. ownerSort, data_item_type = 100 LEFT JOIN candidate_joborder КАК candidate_joborder_submitted ПО candidate_joborder_submitted.candidate_id = candidate.candidate_id И candidate_joborder_submitted.status> = 400 и candidate_joborder_submitted.site_id = 1 и candidate_joborder_submitted.status! = 650 LEFT JOIN пользователя AS owner_user ПО candidate.owner = owner_user.user_id ЛЕВЫЙ РЕГИСТРИРУЙТЕСЬ saved_list_entry ON saved_list_entry.data_item_type = 100 И saved_list_entry.data_item_id = candidate.candidate_id И saved_list_entry.site_id = 1, где 1 = candidate.site_id GROUP BY candidate.candidate_id ORDER BY dateModifiedSort DESC LIMIT 0, 15; РАЗЪЯСНЯЕМ '1', 'PRIMARY',, 'систему' 'вложения' Результаты, 'IDX_type_id, IDX_data_item_id, dataitem1', NULL, NULL, NULL, '0', 'Const строки не найден' '1', 'ПЕРВИЧНЫЙ', 'Кандидат', 'ALL', 'IDX_site_first_last_modified, IDX_site_id_email_1_2', NULL, NULL, NULL, '8645', «Используя где; Использование временного; Использование FileSort ' '1', 'PRIMARY', 'candidate_joborder_submitted', 'ссылка', 'IDX_candidate_id, IDX_site_id, IDX_status_special, IDX_site_joborder', 'IDX_candidate_id', '4', 'opencats.candidate.candidate_id', '1',' Используя где» '1', 'PRIMARY', 'owner_user', 'eq_ref', 'ПЕРВИЧНЫЙ', 'ПЕРВИЧНЫЙ', '4', 'opencats.candidate.owner', '1', '', где с помощью '1' , 'PRIMARY', 'saved_list_entry', 'ссылка', 'IDX_data_item_type, IDX_data_item_id, IDX_type_id', 'IDX_data_item_id', '4', «opencats. opencats.joborder.company_id»,„1“,„Используя где“То, что я считаю, это медленная часть. ВЫБРАТЬ CONCAT ( '', candidate_joborder_status.short_description, '') FROM candidate_joborder LEFT JOIN candidate_joborder_status ON candidate_joborder_status.candidate_joborder_status_id = candidate_joborder.status LEFT JOIN joborder ON joborder.joborder_id = candidate_joborder.joborder_id LEFT JOIN компании ON joborder.company_id = company.company_id ГДЕ candidate_joborder .candidate_id = candidate.candidate_id ORDER BY candidate_joborder.date_modified DESC LIMIT 1) AS LastStatus Мои вопросы «какой курс действий я могу предпринять, чтобы ускорить этот запрос вверх»? Есть только 8000 строк на базе и много ресурсов сервера. Таблицы MyISAM и я попытался добавить индексы, которые вы можете увидеть некоторые используются в объяснение, однако я не думаю, что индексы действительно собираются помочь много, потому что кажется, что делает это медленно являетесь CONCAT, FileSort, временная таблица (с нет индексов) и, возможно, тройка не присоединиться. Это мой первый пост так, пожалуйста, извините форматирование. Я буду пытаться изменить его после того, как я отправляю и посмотреть, как это выглядит. Спасибо
rion 63
1

голосов
1

ответ
177

Просмотры

Как удалить след начал с FirebasePerformance

Мы хотим иметь систему, где есть несколько типов трасс (объявленных в перечислении), и мы предполагаем, что каждый тип трассы будет один из такого рода во всей продолжительности жизни трассировки в. Мы используем что-то вроде этого: FirebasePerfAnalytics общественного класса {частное ConcurrentHashMap следы = новый ConcurrentHashMap (); общественный след startTrace (TraceType traceType) {след след = traces.get (traceType); если (следы == NULL) {след = FirebasePerformance.getInstance () newTrace (traceType.name ()). Трассировка oldTrace = traces.put (traceType, след); если (oldTrace == NULL) {trace.start (); }} Возвращать след; } Общественной недействительная stopTrace (TraceType traceType) {след след = traces.remove (traceType); если (след! = NULL) {trace.stop (); }} Общественного перечисление TraceType {// некоторые типы}} Есть случаи, когда будут открыты след, но никогда не закрыты (потому что фактическая задача, которую мы хотим проверить не закончена правильно). Мы не хотим, чтобы отслеживать такие случаи ошибок, но мы не хотим, чтобы просочиться эти мелкие объекты трассировки. Есть ли способ, чтобы удалить их из списка Firebase следов производительности без вызова метода Trace.stop ()?
Gaket
1

голосов
0

ответ
213

Просмотры

C # stackalloc медленнее, чем обычные переменные?

У меня есть 2 функции, реализующие uint128 умножение в 2 различными способами: один использует переменные, другие использующие stackalloc «массивы». статический оператор общественного UInt128 Variable Version * (UInt128 я, UInt128 к) {ULONG I0 = i._uint0; ULONG I1 = i._uint1; ULONG I2 = i._uint2; ULONG I3 = i._uint3; ULONG J0 = j._uint0; ULONG J1 = j._uint1; ULONG J2 = j._uint2; ULONG J3 = j._uint3; ULONG R0 = 0; ULONG R1 = 0; ULONG R2 = 0; ULONG R3 = 0; если (0 = 0) {R0 + = I0 * J0; R1 + = I0 * J1; R2 + = I0 * J2; R3 + = I0 * J3; } Если (I1 = 0) {R1 + = I1 * J0; R2 + = I1 * J1; R3 + = I1 * J2; } Если (I2 = 0) {R2 + = I2 * J0; R3 + = I2 * J1; } R3 + = I3 * J0; R1 + = R0 >> 32; R0 & = uint.MaxValue; R2 + R1 = >> 32; R1 & = uint.MaxValue; R3 + R2 = >> 32; R2 = & uint.MaxValue; R3 = & uint.MaxValue; вернуть новый UInt128 ((UINT) R3, (UINT) R 2, (UINT) R1, (UINT) R0); } Stackalloc версия [0 + 1], [1 + 1], и т.д. оставлены только для ясности. Они будут оптимизированы C # компилятором в константы в любом случае. общественный небезопасным статический оператор UInt128 * (UInt128 я, UInt128 к) {вар я = stackalloc ULONG [4]; вар J = stackalloc ULONG [4]; Var R = stackalloc ULONG [4]; Я [0] = i._uint0; I [1] = i._uint1; I [2] = i._uint2; I [3] = i._uint3; J [0] = j._uint0; J [1] = j._uint1; J [2] = j._uint2; J [3] = j._uint3; если (I [0]! = 0) {Р [0] + = I [0] * J [0]; Р [0 + 1] = I [0] * J [1]; Р [0 + 2] + = I [0] * J [2]; Р [0 + 3] + = I [0] * J [3]; } Если (I [1]! = 0) {R [1] + = I [1] * J [0]; R [1 + 1] = I [1] * J [1]; R [1 + 2] + = I [1] * J [2]; } Если (I [2]! = 0) {R [2] + = I [2] * J [0]; R [2 + 1] = I [2] * J [1]; } R [3] + = I [3] * J [0]; R [1] + = Р [0] >> 32; Р [0] & = uint.MaxValue; R [2] + = R [1] >> 32; R [1] & = uint.MaxValue; R [3] + = R [2] >> 32; R [2] & = uint.MaxValue; R [3] & = uint.MaxValue; вернуть новый UInt128 ((UINT) R [3], (UINT) R [2], (UINT) R [1], (UINT) Р [0]); } По какой-то причине «переменная» версия, кажется, ~ 20% быстрее, чем версия «stackalloc» на x86 и x64 (с оптимизацией) с помощью C # 7.2 компилятор работает на .NET 4.6.1. Не проверили производительность на новых / старых рамок, но подозреваю, что это будет похоже, так что мой вопрос не является специфичным только 4.6.1, как представляется, как правило, бывает, что stackalloc медленнее. Есть ли какой-либо причине, что версия stackalloc медленнее, учитывая, что обе версии выделяют точно такой же объем памяти (12 * SizeOf (ULong)) и выполняют одни и те же операции, в том же порядке? Я действительно предпочел бы работать с массивами через stackalloc вместо переменных.
Fit Dev
1

голосов
0

ответ
99

Просмотры

Производительность запросов на AX против StudioManagement

Иногда, не всегда, у меня есть проблемы с производительностью некоторых действий в нашей ERP, например, когда пользователи окончательной доработке груза. Таким образом, единственным решением является восстановление индексов на inventdim таблицы, но индексы не фрагментированы! :( Если я понимаю след я могу увидеть план выполнения читает много регистров и занимает много времени. Но если я понимаю, один и тот же запрос на моем Management Studio запрос автоматически ... Я не могу понять, что проблема ... :( Индексы не фрагментирован, stadistics в порядке и не происходит .... Может ВСЕГДА ли вы мне помочь? ВЫБРАТЬ A.ITEMID, B.CONFIGID ИЗ INVENTSUM A, B INVENTDIM WHERE A.DATAAREAID = «лор» И A.CLOSED = 0 и A.ITEMID = 'V69350032' И B.DATAAREAID = 'лор' И B.INVENTLOCATIONID = 'АТ' И B.WMSLOCATIONID = 'LFINAL2'
TBP
1

голосов
1

ответ
27

Просмотры

Наиболее эффективный способ получить корневой узел на дереве объекта

Я заинтересован в каком-то шаблоне проектирования, который даст мне очень быстрый доступ с любого узла дерева к корню дерева с минимальным процессором и памятью накладными расходами, как это возможно. Теперь, чтобы перебирать очевидные решения, и объяснить, почему они неприменимы: идти вниз по дереву, пока корень не найден - что то, что я сейчас делаю, но, как дерево может получить довольно глубоко и корневой доступ довольно часто, то есть не является идеальным решением, даже если смягчающие накладные расходы за счет кэширования и повторного использования корня как можно больше сохранить указатель корневого узла в каждом узле - очень быстро, но добавляет значительные накладные расходы памяти, поскольку дерево является довольно большим Теперь, если есть только одно дерево, я мог бы использовать синглтон, статический член класса или любой подобный подход, однако приложение имеет более чем одно дерево, каждый из которых представляет собой открытый проект. Прежде чем прибегать к поиску корня, мой дизайн участвует только один единственный активный проект в то время, так что я мог бы предположить, что если какая-либо пользовательская активность происходит, она будет предназначаться для активного проекта, который был очень эффективным способом, чтобы получить корневой элемент конкретного объекта. Но теперь у меня есть приложение, несколько окон, где каждое окно может иметь различный активный проект, а также между проектами связи, которые могут вызвать активность в проекте, который в настоящее время не активен в любом окне редактора. Так что уже не возможно использовать «активный указатель проекта» подход. Кажется, что я исчерпал все возможные варианты, но там могут быть некоторые фантазии шаблон дизайна, которые могли бы дать мне хороший компромисс? который был очень эффективным способом, чтобы получить корневой элемент конкретного объекта. Но теперь у меня есть приложение, несколько окон, где каждое окно может иметь различный активный проект, а также между проектами связи, которые могут вызвать активность в проекте, который в настоящее время не активен в любом окне редактора. Так что уже не возможно использовать «активный указатель проекта» подход. Кажется, что я исчерпал все возможные варианты, но там могут быть некоторые фантазии шаблон дизайна, которые могли бы дать мне хороший компромисс? который был очень эффективным способом, чтобы получить корневой элемент конкретного объекта. Но теперь у меня есть приложение, несколько окон, где каждое окно может иметь различный активный проект, а также между проектами связи, которые могут вызвать активность в проекте, который в настоящее время не активен в любом окне редактора. Так что уже не возможно использовать «активный указатель проекта» подход. Кажется, что я исчерпал все возможные варианты, но там могут быть некоторые фантазии шаблон дизайна, которые могли бы дать мне хороший компромисс?
dtech
1

голосов
1

ответ
147

Просмотры

Проблема производительности при использовании Java 8 Потока (Bulk данных в списке)

У меня следующие 2 кодов / логика в одном методе: Код 1: возвращает около 10K ++ данных // myObjectRepository расширяет пружины CrudRepository (спящем) Окончательный список myObjectList = myObjectRepository.getObjectsByIdAndReportDate (); Код 2: Фильтры 10К ++ данных // Только возвращать действительный объекты окончательный список objectsWithStrings = myObjectList // parallelStream () случайным образом сгенерирует исключение, связанные с зимовать .stream () .filter (d -> d.getMyObjectStrings () = NULL &&! !. d.getMyObjectStrings () IsEmpty ()) .collect (Collectors.toList ()); Примечание: MyObject является зимует объект со следующей структурой: @JsonBackReference // Джексона - двунаправленные отношениями. Для того, чтобы избежать «Невозможно записать содержимое: Бесконечные рекурсии (StackOverflowError)» @OneToMany (mappedBy = "MyObject") @Cache (использование = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) приватный Список myObjectStrings; Он работает, как это, но я встречая следующее Code 2: проблема производительности в моем коде 2. случайная проблема спящего режима, когда я использовал parallelStream (), таким образом, я решил использовать последовательный поток () вместо того, чтобы в этом случай, есть ли способ для меня, чтобы оптимизировать код 2 так что он может обрабатывать данные или отфильтровать данные быстрее? Сниппет ошибки спящего режима я встречая: 2018-03-05 15: 35: 28,431 ОШИБКА 10056 --- [NiO-8082-Exec-1] ebMyServiceExceptionControllerAdvice: общая ошибка встречается [400] [Ошибка доступа поле [частное Java .util.Date my.entity.AnotherObjectPK.reportDate] путем отражения для постоянной собственности [my.entity.AnotherObjectPK # reportDate]: нуль] org.hibernate.property. ЛЮБОЙ) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "Обработчик"}) общественный класс MyObjectEntity реализует Serializable {частных статический окончательный длинный serialVersionUID = 1L; @Id @ManyToOne (выборка = FetchType.LAZY) @Fetch (FetchMode.SELECT) @JoinColumns (значение = {@JoinColumn (Name = "ObjectId", referencedColumnName = "ObjectId", вставляемый = ложь, обновляемым = ложь), @JoinColumn (имя = "REPORT_DATE", referencedColumnName = "REPORT_DATE", вставляемая = ложь, обновляемое = ложь), @JoinColumn (имя = "LASTGENERATION", referencedColumnName = "ПОКОЛЕНИЕ", вставляемый = ложь, обновляемая = ложь)}, ForeignKey = @ ForeignKey (значение = ConstraintMode.CONSTRAINT)) частное anotherObject anotherObject; @JsonBackReference // Джексон - двунаправленное отношение. Для того, чтобы избежать "Невозможно записать содержимое: зацикливание (StackOverflowError)" @OneToMany (mappedBy = "MyObject") @Cache (использование = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) приватный Список myObjectStrings; EmbeddedPrimary Ключ: MyObjectEntityPK @data класс MyObjectEntityPK реализует Serializable {частный статический окончательный длинный serialVersionUID = 1L; @Id @ManyToOne (выборка = FetchType.LAZY, targetEntity = AnotherObject.class) @JoinColumns (значение = {@JoinColumn (имя = "OBJECTID", referencedColumnName = "OBJECTID", вставляемый = FALSE, обновляемым = ложь), @JoinColumn ( Name = "REPORT_DATE", referencedColumnName = "REPORT_DATE", вставляемая = ложь, обновляемые = ложь)}, ForeignKey = @ForeignKey (значение = ConstraintMode.CONSTRAINT)) частное AnotherObject anotherObject; } AnotherObject объект: @data @Entity @Table (имя = "ANOTHER_OBJECT", схема = "MySchema") @Cache (использование = CacheConcurrencyStrategy.READ_WRITE) @IdClass (AnotherObjectPK.class) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "обработчик"}) общественного класса AnotherObject реализует Serializable {...} Embedded Первичный ключ: AnotherObjectPK класс @data AnotherObjectPK реализует Serializable {частный статический окончательный длинный serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } CONSTRAINT)) частное AnotherObject anotherObject; } AnotherObject объект: @data @Entity @Table (имя = "ANOTHER_OBJECT", схема = "MySchema") @Cache (использование = CacheConcurrencyStrategy.READ_WRITE) @IdClass (AnotherObjectPK.class) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "обработчик"}) общественного класса AnotherObject реализует Serializable {...} Embedded Первичный ключ: AnotherObjectPK класс @data AnotherObjectPK реализует Serializable {частный статический окончательный длинный serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } CONSTRAINT)) частное AnotherObject anotherObject; } AnotherObject объект: @data @Entity @Table (имя = "ANOTHER_OBJECT", схема = "MySchema") @Cache (использование = CacheConcurrencyStrategy.READ_WRITE) @IdClass (AnotherObjectPK.class) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "обработчик"}) общественного класса AnotherObject реализует Serializable {...} Embedded Первичный ключ: AnotherObjectPK класс @data AnotherObjectPK реализует Serializable {частный статический окончательный длинный serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } @Data @Entity @Table (Name = "ANOTHER_OBJECT", схемы = "MySchema") @Cache (использование = CacheConcurrencyStrategy.READ_WRITE) @IdClass (AnotherObjectPK.class) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "обработчик"}) общественный класс AnotherObject реализует Serializable {...} Embedded первичного ключа: класс AnotherObjectPK @data AnotherObjectPK реализует Serializable {частных статический окончательный длинный serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } @Data @Entity @Table (Name = "ANOTHER_OBJECT", схемы = "MySchema") @Cache (использование = CacheConcurrencyStrategy.READ_WRITE) @IdClass (AnotherObjectPK.class) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "обработчик"}) общественный класс AnotherObject реализует Serializable {...} Embedded первичного ключа: класс AnotherObjectPK @data AnotherObjectPK реализует Serializable {частных статический окончательный длинный serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } класс) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "Обработчик"}) общественный класс AnotherObject реализует Serializable {...} Embedded Первичного ключа: класс AnotherObjectPK @data AnotherObjectPK реализует Serializable {частных статическим Окончательный долго serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } класс) @JsonAutoDetect (fieldVisibility = JsonAutoDetect.Visibility.ANY) @JsonIgnoreProperties ({ "hibernateLazyInitializer", "Обработчик"}) общественный класс AnotherObject реализует Serializable {...} Embedded Первичного ключа: класс AnotherObjectPK @data AnotherObjectPK реализует Serializable {частных статическим Окончательный долго serialVersionUID = 1L; @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; } @Id @column (имя = "OBJECTID", обнуляемый = ложь, уникальный = истина) частный целочисленный идентификатор; @Id @column (имя = "REPORT_DATE") частная Дата reportDate; }
Jown
1

голосов
1

ответ
1.9k

Просмотры

Optimize read from .gz file and cpu utilization python

1 ГБ (430 файлов) нагрузка, то потребовалась ки 13 минут, чтобы выполнить и загрузка процессора составляла около 100%. PID USER PR NI Вирт RES SHR S% CPU% MEM TIME + COMMAND 12586 корень 20 0 156m 134m 1808 R 99,8 0,2 0: 40,17 сценарий Пожалуйста, дайте мне знать, что, как я могу оптимизировать код выше, чтобы сократить время выполнения. Спасибо
van neilsen
1

голосов
0

ответ
394

Просмотры

Длинное elapsed_time с Azure SQL

Мы используем Azure SQL успешно с низкими объемами данных в течение некоторого времени. Теперь, когда мы увидели умеренного увеличение объемов хранения данных, мы переживаем очень длительное время запроса. Что странно, что запрашивая dm_exec_query_stats показывает, что время рабочего / процессора для запросов очень низкие (около 0 секунд), но прошедшее время долго (может быть более 30 секунд). Мы обновили наш ценовой ярус до 100 DTU лет, после чего наше потребление ресурсов для всех категорий составляет лишь <10% от имеющихся ресурсов. Планы выполнения выглядеть достойно и учитывая, что времена CPU настолько малы, что это не должно быть проблемой. Я также проверил время ожидания, которые не дали никаких существенных результатов. Время ожидания для отдельных запросов показывают всего несколько миллисекунд времени ожидания и единственный значимый вид услужливого SOS_WORK_DISPATCHER который Безразлично» т звонит колокол - или есть в документации Microsoft. Как вебы-приложение и SQL Server потребляющего данных находятся в Azure Западной Европе и принимая во внимание, что мы не видели значительный И.О. суммы не должна быть проблемой. Кто-нибудь есть идея, что может быть причиной этого или что SOS_WORK_DISPATCHER
Otto T.
1

голосов
0

ответ
259

Просмотры

Как повысить производительность pouchdb-поиска запросов?

Я использую репликацию pouchDB из CouchDB в реакции родных. Это мой package.json: "pouchdb": "^ 6.3.4", "pouchdb-найти": "^ 6.3.4", "pouchdb реагируют родной": "^ 6.3.4", У меня есть база данных с именем «databaseA», где один из колонны «col1». Я написал запрос с использованием pouchdb-поиском, чтобы получить все записи databaseA с согласованием значения в col1. Const LocalDB = новый PouchDB ( 'databaseA'); Const remoteDB = новый PouchDB ( 'databaseA'); PouchDB.plugin (findPlugin); localDB.replicate.from (remoteDB, (ERR, ответ) => {если (ERR) {возвращение console.log (ERR);}},); localDB.createIndex ({индекс: {полей: [ 'col1', 'col2'], DDoc: 'col1-col2-индекс',},}); localDB.find ({селектор: {col1: {$ экв: '1'}, col2: правда,}, поля: [ '_id', 'col1', 'col2'], предел: 0, // сортировки: [ '_id'], use_index: «col1-col2-индекс .»,}) то ((результаты) => {оповещения (` Индекс призван увеличить скорость: $ {results.docs.length} `);.}) поймать ((ех) => {// предупреждение (` Index призванный повысить скорость: Исключение: $ {JSON.stringify (ех)} `);}); Функция экспорта GetItems (col1) {Const = начальный промежуток новый Date (); возврата (рассылка, GetState) => {возврата localDB.find ({селектор: {col1: {$ экв: col1,}, col2: истинно,}, поля: [ '_id', 'col2', 'col1'], // сортировка: [ '_id'], use_index: 'col1-col2-индекс'}) то ((результаты) => {сопз время = новая дата () GetTime () - начальное время; предупреждение ( `Общее время.. $ {время} `);}). улов ((ех) => {console.log (ех);}); }; } Я около 900 записей в базе данных. Она занимает около 2мин, которая достаточно высока для запроса. Как производительность этого запроса увеличивается? Пожалуйста помоги
User1230321
1

голосов
0

ответ
69

Просмотры

Как получить подробные flamegraphs с обрешеткой пламени для кода, написанного с использованием Rayon?

Я пытаюсь получить некоторые метрики производительности, используя ящик пламени с кодом, которую я написал, используя Rayon: Экстерн клети пламени; пламени :: начать ( "TAG-А"); // Предположим, VEC является Vec vec.par_iter_mut () фильтр (| а | а == 1) .for_each (| B | FUNC (б)). // FUNC (б) действует на каждом I32 и посылает некоторые результаты в пламени канала :: конец ( "TAG-A"); // больше коды, но не связанное пламя :: dump_stdout (); Это прекрасно работает, но только дает информацию для всего параллельного итератора. Я хотел бы получить некоторую более мелкозернистую подробную информацию о функции FUNC. Я пытался добавить начало / конец внутри функции, однако время информация доступна только тогда, когда я называю пламя :: commit_thread (), а затем, кажется, только напечатать это на стандартный вывод. В идеале я хотел бы, чтобы распечатать время, проведенное без данного тега, когда я звоню дамп в конце моего кода. Есть ли способ сбросить тег из всех потоков? Документация пламени не велика.
Darakian

Просмотр дополнительных вопросов

Связанные вопросы