Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
.NET 2.x

Оптимизация кода

01.07.2013, 13:28. Показов 2720. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста get-ер оптимизировать. Уже оптимизировал как мог для максимально быстрого получения обьекта, но все ровно не достаточно быстро. Тестировал и с List-ом, и с HashSet-ов, и с разными словарями. Небольшой прирост производительности дало кеширование последнего полученного результата, чтобы не искать еще раз.

Constants.ChunksCount - 25
Chunk - класс
X, Y - int-овый координаты в пространстве

Кликните здесь для просмотра всего текста
C#
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
using System;
using System.Collections.Generic;
namespace Assets.Scripts.Terrain
{
    public class ChunkCollector
    {
        private readonly Chunk[] _chunks = new Chunk[Constants.ChunksCount];
 
        private Chunk _lastAccesedChunk = null;
 
        public Chunk[] Chunks
        {
            get { return _chunks; }
        }
 
        public Chunk this[int x, int y]
        {
            get
            {
                if (_lastAccesedChunk != null)
                {
                    if (_lastAccesedChunk.X == x && _lastAccesedChunk.Y == y)
                        return _lastAccesedChunk;
                }
                //InternalCheck(x, y);
 
                Chunk chunk = null;
                for (int i = 0; i < Constants.ChunksCount; ++i)
                {
                    Chunk temp = _chunks[i];
                    if (temp == null)
                        continue;
 
                    if (temp.X != x || temp.Y != y)
                        continue;
 
                    chunk = temp;
                    _lastAccesedChunk = chunk;
                    break;
                }
                return chunk;
            }
            set
            {
                InternalCheck(x, y);
 
                Chunk chunk = null;
                if (value == null)
                {
                    for (int i = 0; i < Constants.ChunksCount; ++i)
                    {
                        chunk = _chunks[i];
                        if (chunk == null)
                            continue;
 
                        if (chunk.X != x || chunk.Y != y)
                            continue;
 
                        //PoolChunk.AddObject(_chunks[i]);
                        _chunks[i].Dispose();
                        _chunks[i] = null;
                        break;
                    }
                }
                else
                {
                    for (int i = 0; i < Constants.ChunksCount; ++i)
                    {
                        chunk = _chunks[i];
                        if (chunk != null)
                            continue;
 
                        _chunks[i] = value;
                        break;
                    }
                }
            }
        }
 
        internal void InternalCheck(int x, int y)
        {
            if (_chunks == null)
                throw new NullReferenceException("_chunks");
 
            if (x < -0x200000 || x > 0x200000)
                throw new IndexOutOfRangeException("x");
 
            if (y < -0x200000 || y > 0x200000)
                throw new IndexOutOfRangeException("y");
        }
 
        /*private ulong Pack(int x, int y)
        {
            long xPacked = ((long)x) << 32;
            long yPacked = y & 0xFFFFFFFFL;
            return (ulong)(xPacked | yPacked);
        }*/
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2013, 13:28
Ответы с готовыми решениями:

Оптимизация кода в C#
Подскажите книгу пожалуйста,по оптимизации кодов C# если такие имеют место быть!!! Пишу избыточные коды ((( хотелось бы писать более...

Оптимизация кода
Консольное приложение. Писалось на VS 2010 с использованием .NET Framework 4. Вроде более-менее оптимизировал, но все равно генерация...

Оптимизация кода на C#
Написал две статьи по оптимизации кода на C#: http://itw66.ru/blog/c_sharp/542.html - Работа с ресурсами сборки ...

21
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.07.2013, 08:29
Студворк — интернет-сервис помощи студентам
sigmov, да я помню, код определителя я у тебя нагло спер в свое время..
0
44 / 45 / 15
Регистрация: 11.08.2010
Сообщений: 226
05.07.2013, 15:02  [ТС]
Нет, 176мс это разница между старой реализацией и реализацией на SortedList
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2013, 15:02

Оптимизация кода с циклами
Помогите оптимизировать код с тремя вложеными циклами. Буду благодарен, и возможно это сделать стандартным способом или как то еще не...

Файлы, сеть, многопоточность: оптимизация кода
Оговорюсь сразу, использую .NET 4.0. Это в случае будущих рекомендаций в пользу async-await =) Добрый вечер/день/утро или что у вас там) ...

Оптимизация кода заполнения класса из словаря
Здравствуйте, реально ли оптимизировать следующий код? код считывает названия полей и их значения и запихивает в соответствующие...

Передавать в функции имя таблицы (Оптимизация кода)
Есть класс class A { public Int32 IDGeneration() { ... var _tickers = from tickers...

Оптимизация кода поиска определенных байт в памяти
public int findsignature(int PID, byte signature) { unsafe { long MaxAddr =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru