All streams
Search
Write a publication
Pull to refresh
12
0.7
Алексей Ткаченко @a-tk

Разработчик ПО

Send message
А можно распараллелить запись, начав двигаться с начала и с середины, но на половину длины.
Кстати:
Linux ***** 3.16.0-4-586 #1 Debian 3.16.43-2+deb8u2 (2017-06-26) i686 GNU/Linux
Linux ***** 3.4.75-sun7i #35 SMP PREEMPT Sat Feb 8 02:10:31 CST 2014 armv7l GNU/Linux
Лехко.
Скрытый текст
Allocation 0: 0xb34ae008
Allocation 1: 0xaf4ad008
Allocation 2: 0xab4ac008
Allocation 3: 0xa74ab008
Allocation 4: 0xa34aa008
Allocation 5: 0x9f4a9008
Allocation 6: 0x9b4a8008
Allocation 7: 0x974a7008
Allocation 8: 0x934a6008
Allocation 9: 0x8f4a5008
Allocation 10: 0x8b4a4008
Allocation 11: 0x874a3008
Allocation 12: 0x834a2008
Allocation 13: 0x7f4a1008
Allocation 14: 0x7b4a0008
Allocation 15: 0x7749f008
Allocation 16: 0x7349e008
Allocation 17: 0x6f49d008
Allocation 18: 0x6b49c008
Allocation 19: 0x6749b008
Allocation 20: 0x6349a008
Allocation 21: 0x5f499008
Allocation 22: 0x5b498008
Allocation 23: 0x57497008
Allocation 24: 0x53496008
Allocation 25: 0x4f495008
Allocation 26: 0x4b494008
Allocation 27: 0x47493008
Allocation 28: 0x43492008
Allocation 29: 0x3f491008
Allocation 30: 0x3b490008
Allocation 31: 0x3748f008
Allocation 32: 0x3348e008
Allocation 33: 0x2f48d008
Allocation 34: 0x2b48c008
Allocation 35: 0x2748b008
Allocation 36: 0x2348a008
Allocation 37: 0x1f489008
Allocation 38: 0x1b488008
Allocation 39: 0x17487008
Allocation 40: 0x13486008
Allocation 41: 0xf485008
Allocation 42: 0xb484008
Allocation 43: 0x4047008
Allocation 44: 0x46008
Allocation 45: 0xb77ed008
Allocation 46: 0xbb7ee008
Allocation 47: 0
Cleanup

Скрытый текст
#include <memory.h>
#include <iostream>
#include <vector>
#include <unistd.h>

int main(int, char**)
{
        std::vector<void*> v;
        v.reserve(1024);
        const size_t bufSize = (1<<26);
        for (int i = 0;; ++i)
        {
                usleep(100000);
                void* ptr = malloc(bufSize);
                std::cout << "Allocation " << i << ": " << ptr << std::endl;
                if (ptr == nullptr) break;
                v.push_back(ptr);
        }
        std::cout << "Cleanup" << std::endl;
        for (auto ptr : v)
        {
                free(ptr);
        }
        return 0;
}

Можно, но когда Вы увидите такой код в чужом проекте повсеместно, Вы вряд ли сильно обрадуетесь.
«Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.»
Автора знаете?
В Паскале это была неявная переменная Result, а вместо возврата — псевдофункция Exit.
Не сказал бы, что писать в таком стиле доставляло удовольствие.
Это точно не преждевременная оптимизация некритичных фрагментов кода?
Было бы интересно в тетрисе найти уязвимость, которая при определённой конфигурации фигурок приводила бы к увеличению счёта до достаточно большой величины :)
Там всё хитро. Надеюсь, изложу близко к тому, что написано у Макконнелла, но, возможно, на моё изложение наложились и собственные деформации и опыт.

Тезис: функция должна соблюдать инварианты.
Сначала надо выполнить проверки входных данных и не приступать к работе, если они не соблюдены.
Дальше выполняется код, который должен иметь одну точку выхода.
А ещё собственные данные могут обрабатываться для кого-то. Пример — те же базы данных (выше в комментариях было).
А не надо для встраиваемых систем динамически выделять память. Только преаллокация при компиляции.
А ещё была перепакованая пиратина, где вместо удовольствия была надпись «Откиньтесь на спинку стула и молитесь». Или может быть это был шуточный баян.
Зато int можно было бы на signed char заменить в таблице трансляции. Возможно, чуть улучшило бы ситуацию.
Тогда это не глаз.
Я в своё время водил телескоп при съёмках МКС — удовольствие так себе.

PS: Пристыкованный Шаттл на снимках был.
Со структурами проблем нет, надо маппить правильно и не забывать обвешивать атрибутом StructLayout со стороны .NET-а, а ещё учитывать выравнивание (или бороться с ним) со стороны Си.
Вооружённый взгляд имеет малое поле зрения, что не даёт возможности толком наблюсти быстро движущийся объект.
Тупанул.
Загрузка полей класса Native через рефлексию идёт?
Разве я что-то говорил про копипасту в коллбэках?
Посмотрю, спасибо.
Я знаю и смиренно жду.

Information

Rating
1,849-th
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity

Specialization

Software Developer, Software Architect
Lead
From 1,000,000 $
C#
.NET
C++
Git