С Новым годом! Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653

tmp with mpl

12.02.2013, 19:30. Показов 2029. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я в ран тайме заполняю массив числами фибоначи до 10000 элемента...можно ли вычислить в компиле тайм и в рантайме только заполнить?..)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2013, 19:30
Ответы с готовыми решениями:

Для чего нужны /tmp и /var/tmp и какой размер нужен?
Для чего эти два раздела? /tmp /var/tmp И какой размер делать? Хватит ли если сделать около 100 мегабайт? Или они для копирования...

Поиск русского мануала на датчики TMP 03, TMP 36
У меня небольшая просьба, ищу datasheet на датчики TMP 03, TMP 36, но нахожу только английскую версию с которой я мягко говоря не очень в...

Вирус создаёт файлы tmp.tmp везде.
Вирус прописываеться в системном процессе lsass. Невозможно удалить. Распространяеться по всей облости жёсткого диска и потихоньку сбоит...

3
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.02.2013, 20:31
1) Оно вряд ли скомпилится, слишком много шаблонных инстанцирований будет... Ну, за пару часиков может и скомпилится.
2) Даже первые 100 элементов заполнить не получится из-за того, что результат перестанет влезать в стандартные типы данных. Следовательно, нужно либо вычислять по какому-то модулю, либо использовать длинную арифметику.
0
Пес войны
 Аватар для NeonLost
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
12.02.2013, 21:09  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
1) Оно вряд ли скомпилится, слишком много шаблонных инстанцирований будет... Ну, за пару часиков может и скомпилится.
2) Даже первые 100 элементов заполнить не получится из-за того, что результат перестанет влезать в стандартные типы данных. Следовательно, нужно либо вычислять по какому-то модулю, либо использовать длинную арифметику.
чет я не подумал...пускай будут не числа фибоначи, а формула i*3cos(45)/2(где i от 1 до 1000)
0
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
14.02.2013, 22:07
Лучший ответ Сообщение было отмечено как решение

Решение

Набросал такой код:
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
template <long N, long R = 1, long S = 0>
struct CompileTimeArray {
    long value;
    CompileTimeArray<N - 1, R + 1, S + R> tail;
 
    CompileTimeArray() : value(S) {}
};
 
template <long R, long S>
struct CompileTimeArray<0L, R, S> {
    long value;
 
    CompileTimeArray() : value(S) {}
};
 
int main() {
    CompileTimeArray<LENGTH> array;
    long * array_pointer = (long *) &array;
    std::ostream_iterator<long> iter(std::cout, " ");
    std::copy(array_pointer, array_pointer + LENGTH, iter);
    std::endl(std::cout);
}
создаем массив из элементов последовательности https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{n(n-1)}{2}. Причем значения считаем во время компиляции, а во время исполнения только заполняем массив.

Пример:
Code
1
2
$ g++ recur.cpp  -DLENGTH=10 && ./a.out
0 1 3 6 10 15 21 28 36 45
С массивом из 100'000 элементов компилятор возился около шести минут и отожрал под это дело два с половиной гигабайта памяти:
Code
1
2
3
4
5
$ time g++ recur.cpp  -DLENGTH=100000 -ftemplate-depth=200000 -finline-limit=200000 -O1
 
real    5m44.512s
user    5m40.933s
sys     0m2.116s
К сожалению, заставить компилятор проинлайнить все конструкторы мне не удалось. Из 100'000 компилятор проинлайнил только 53759:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
00000000005c19d2 <_ZN16CompileTimeArrayILl99998ELl3ELl3EEC1Ev>:
  5c19d2:   48 83 ec 08             sub    $0x8,%rsp
  5c19d6:   48 c7 07 03 00 00 00    movq   $0x3,(%rdi)
  5c19dd:   48 c7 47 08 06 00 00    movq   $0x6,0x8(%rdi)
  5c19e4:   00
  5c19e5:   48 c7 47 10 0a 00 00    movq   $0xa,0x10(%rdi)
  5c19ec:   00
  5c19ed:   48 c7 47 18 0f 00 00    movq   $0xf,0x18(%rdi)
  5c19f4:   00
  5c19f5:   48 c7 47 20 15 00 00    movq   $0x15,0x20(%rdi)
  5c19fc:   00
  5c19fd:   48 83 c7 28             add    $0x28,%rdi
  5c1a01:   e8 a2 ff ff ff          callq  5c19a8 <_ZN16CompileTimeArrayILl99993ELl8ELl28EEC1Ev>
  5c1a06:   48 83 c4 08             add    $0x8,%rsp
  5c1a0a:   c3                      retq
  5c1a0b:   0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)
Так что при заполнении массива будет совершено более 46000 вложенных вызовов конструкторов.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2013, 22:07
Помогаю со студенческими работами здесь

файл tmp.tmp
ПОМОГИТЕ!!!!!!!!!! у меня на робоче столе появился файл tmp.tmp, я его удаляю а после включения интернета он опять появляется.(((((( От...

Файл Tmp.tmp
Вообщем такая проблема, после запуска браузера на рабочем столе появляется файл tmp.tmp и не заходит не на какую страницу. Загрузка ЦП 100%...

Пишу: $var='tmp'; $$var='Привет'; print $tmp; Вижу: Привет
Пишу: $var='tmp'; $$var='Привет'; print $tmp; Вижу: Привет Это глюк, или это предусмотренно?

MPL push_back
А как тут push_back пользоваться?#include &lt;iostream&gt; #include &lt;type_traits&gt; #include &lt;boost/mpl/vector.hpp&gt; #include...

boost::mpl
Всем привет. Просьба поделиться какими-либо реальными примерами использования Boost :: MPL, чтобы я лучше мог понять его цели и область...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru