Arquivo de 17 março, 2011
C++: Medindo intervalo de tempo em milissegundos no Linux, exemplo rápido
Publicado por Rafael A. de Almeida em Programação em 2011-03-17
1 segundo / 1000 = 1 milissegundo
1 segundo / 1000000 = 1 microssegundo
#include <iostream>
#include <sys/time.h>
using namespace std;
int main()
{
struct timeval Inicio, Fim;
double Segundos, Milissegundos, Microssegundos;
/* Coleta a data de inicio do processo */
gettimeofday(&Inicio, NULL);
/*
* Seu programa faz alguma coisa,
* nesse caso ele só faz esperar 2 segundos
*/
sleep(2);
/* Coleta a data de fim do processo*/
gettimeofday(&Fim, NULL);
/* Calcula o espaço de tempo */
Segundos = Fim.tv_sec - Inicio.tv_sec;
Microssegundos = Fim.tv_usec - Inicio.tv_usec;
/* Transforma segundos e microssegundos em milissegundos */
Milissegundos = Segundos * 1000 + Microssegundos / 1000;
cout << "O programa demorou " << Milissegundos << " milissegundos" << endl;
}
A saída será mais ou menos esta:
O programa demorou 2000.07 milissegundos
Para compilar use:
$ g++ -i nome_do_executável nome_do_arquivo_fonte.cpp
Dúvidas? Deixe um comentário.
Foi usado como referência:
http://pt.wikipedia.org/wiki/Segundo
http://stackoverflow.com/questions/588307/c-obtaining-milliseconds-time-on-linux-clock-doesnt-seem-to-work-properly/588377#588377
C++: Convertendo inteiro (int) em string, exemplo rápido
Publicado por Rafael A. de Almeida em Programação em 2011-03-17
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
string NomeDoFilme = "Rambo";
int Versao = 4;
/* Converte inteiro em string */
std::stringstream Resultado;
Resultado << Versao;
/* Une as duas strings, formando uma só */
NomeDoFilme = NomeDoFilme + " " + Resultado.str();
/* Exibi o resultado */
cout << NomeDoFilme << endl;
}
A saída será:
Rambo 4
Para compilar use:
$ g++ -i nome_do_executável nome_do_arquivo_fonte.cpp
Dúvidas? Deixe um comentário.
Linux: Limpando cache da memória RAM
Publicado por Rafael A. de Almeida em Sistema em 2011-03-17
Vou usar como exemplo um servidor que eu tenho. Ele já está ligado a 52 dias e algumas horas, como mostrado abaixo, veja que ele está usando 272MB de memória RAM.
$ uptime
09:40:22 up 52 days, 16:46, 3 users, load average: 0.10, 0.04, 0.01
$ free -m
total used free shared buffers cached
Mem: 293 272 20 0 93 114
-/+ buffers/cache: 65 228
Swap: 572 20 551
Agora vamos limpar o cache:
$ sudo su # echo 3 > /proc/sys/vm/drop_caches # exit
Resumindo os comandos acima, eu entrei como root, limpei a cache e saí (só isso). Agora vamos ver o resultado:
$ free -m
total used free shared buffers cached
Mem: 293 64 228 0 0 10
-/+ buffers/cache: 53 239
Swap: 572 20 551
Depois da limpeza, o consumo de memória ficou 4 vezes menor, ou seja, 208MB a menos.
Dúvidas? Deixe um comentário.
Foi usando com referência:
http://www.vivaolinux.com.br/dica/Limpando-sua-memoria-cache-de-forma-simples/