Судя по трейсу, ангуляр падает при попытке найти изменения, на операции сравнения.
Возможно у вас в отслеживаемых данных (в $scope) лежат не стандартные объекты, например localStorage или т.п. системные объекты, а их нужно копировать в обычные объекты.
Покажите что у вас в:
$scope.app.setting;
$rootScope.search
$scope.app.search
$localStorage.logged_in
$rootScope.logged_in
Также, вместо deep watch желательно делать проверки на конкретные ключи, либо можно сделать ф-ию которая будет "проверять" ряд необходимых ключей.
> влияет ли GIL на библиотеки, написанные на С.
Почти во всех С либах GIL не используется, поэтому справедливо говорить что GIL влияет только на Python код, а C либы работают в полную мощь.
Олег Цилюрик: там GC, часто данные копируются вместо ссылок, пляски со слайсами, нет темплейтов и т.д.
У меня был проект с математикой и я сделал 2 варианта - на но и С, С в один поток работал в 2 быстрее.
Кол-во комментов по автору можно хранить в статье - это будет гораздо быстрее чем постоянно делать группировки.
Имена авторов можно получить вторым запросом - это быстро. Так же в новой монге есть $lookup но только для агригейт фреймворка.
Если вы обратите внимание на большие магазины - там вместо диапазонов сделаны категории, например размер экрана в дюймах - категории, объем памяти - категории, даже цена иногда категориями "20к-30к руб, 30к-40к руб...", т.е. "диапазоны" превращаются в теги, это как раз сделано для оптимизации.
Но вы все равно можете прикрутить условие, например цену можно вынести в отдельное после: https://docs.mongodb.org/manual/reference/operator...
Тут наоборот можно сэкономить:
* во первых будет храниться только один ид, а не 2 как для таблицы - уже экономия в 2* раза
* далее для таблицы нужен compound хеш индекс - трата оперативки
* т.к. в сообщении список ид будет хранится "кучкой" то его можно будет запаковать - ещё экономия.
если использовать новую mongodb, то там как раз есть сжатие и массивы в документе из коробки.
> 500 тыс. сообщений
даже если на каждое сообщение будет тратиться по 1кб - то это будет всего 0,5Гб - курам на смех.
Возможно у вас в отслеживаемых данных (в $scope) лежат не стандартные объекты, например localStorage или т.п. системные объекты, а их нужно копировать в обычные объекты.
Покажите что у вас в:
$scope.app.setting;
$rootScope.search
$scope.app.search
$localStorage.logged_in
$rootScope.logged_in
Также, вместо deep watch желательно делать проверки на конкретные ключи, либо можно сделать ф-ию которая будет "проверять" ряд необходимых ключей.