Murilo :P

Computação, programação, web e afins :)

Posts Tagueados ‘Programação

Comparação de desempenho: std::vector vs Array

com 2 comentários

C++Comparação entre os códigos assembly gerados para operações de indexação básica, dereferenciação eincremento em std::vectors e arrays/ponteiros.

O código assembly foi gerado pelo gcc 4.1.0 chamado com g++ -03 -S em uma máquina x86_64-suse-linux.

#include 

struct S
{
  int padding;

  std::vector v< int >;            //nosso vector
  int * p;                    //nosso ponteiro
  std::vector< int >::iterator i; //iterador do vector
};

int indexar_ponteiro(S & s) { return s.p[3]; }
  // movq    32(%rdi), %rax
  // movl    12(%rax), %eax
  // ret

int indexar_vector(S & s) { return s.v[3]; }
  // movq    8(%rdi), %rax
  // movl    12(%rax), %eax
  // ret

// Conclusão: Indexar um std::vector é a mesma coisa de indexar um ponteiro.

int deref_ponteiro(S & s) { return *s.p; }
  // movq    32(%rdi), %rax
  // movl    (%rax), %eax
  // ret

int deref_iterador(S & s) { return *s.i; }
  // movq    40(%rdi), %rax
  // movl    (%rax), %eax
  // ret

// Conclusão: Dereferenciar um std::vector é a mesma coisa de dereferenciar um ponteiro.

void incrementar_ponteiro(S & s) { ++s.p; }
  // addq    $4, 32(%rdi)
  // ret

void incrementar_iterador(S & s) { ++s.i; }
  // addq    $4, 40(%rdi)
  // ret

// Conclusão: Incrementar um iterador de std::vector é a mesma coisa de incrementar um ponteiro.

Ou seja, além das facilidades do std::vector, algumas operações básicas tem o mesmo custo tanto com std::vector quanto um array/ponteiro.

Surpreso?

Escrito por Murilo Adriano

Quarta-feira 14 de Janeiro de 2009 em 21:57

Publicado em Baixo nível, C/C++, Programação

Etiquetado com , ,

Ranking TIOBE de Linguagens de Programação Nov/2008

com um comentário

Saiu o índice TIOBE de novembro.

O índice TIOBE indica a popularidade das linguagens de programação. O índice é atualizado uma vez por mês. Os mecanismos de busca populares Google, MSN, Yahoo! e YouTube são usados para obter a classificação. Observe que o índice TIOBE não indica qual é a melhor linguagem de programação ou a linguagem que tem maior número de linhas de código escrito.

Posição
Nov 2008
Posição
Nov 2007
Variação Linguagem Nov 2008 Variação
Nov 2007
Status
1 1 Java 20.299% -0.24% A
2 2 C 15.276% +1.31% A
3 4 C++ 10.357% +1.61% A
4 3 (Visual) Basic 9.270% -0.96% A
5 5 PHP 8.940% +0.25% A
6 7 Python 5.140% +0.91% A
7 8 C# 4.026% +0.11% A
8 11 Delphi 4.006% +1.55% A
9 6 Perl 3.876% -0.86% A
10 10 JavaScript 2.925% 0.00% A
11 9 Ruby 2.870% -0.21% A
12 12 D 1.442% -0.26% A
13 13 PL/SQL 0.939% -0.24% A
14 14 SAS 0.729% -0.40% A–
15 18 ABAP 0.570% -0.08% B
16 19 Pascal 0.511% -0.13% B
17 17 COBOL 0.510% -0.20% B
18 25 ActionScript 0.506% +0.04% B
19 23 Logo 0.489% -0.04% B
20 16 Lua 0.473% -0.27% B

Fonte: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Escrito por Murilo Adriano

Terça-feira 25 de Novembro de 2008 em 15:41

Publicado em Programação

Etiquetado com ,

Linguagens de programação – C++ – Direito de defesa

com 27 comentários

C++Um dia desses passeando por blogs ví um post que me chamou a atenção. O título é Linguagens de programação – C++ e, claro, chamou minha atenção, não apenas por causa do post assim com também por causa dos comentários sobre o post.

O objetivo desse post não é gerar um flame, até porque não atacarei nenhuma linguagem, só dissertarei sobre fatos.

Leia o resto deste post »

Escrito por Murilo Adriano

Sexta-Feira 14 de Novembro de 2008 em 01:12

Publicado em C/C++, Programação

Etiquetado com , , ,

Escrevendo um Código PHP Seguro

com 2 comentários

Há uns dois anos atrás o Diego (rand) e eu (na época com nick “ckR”) fizemos uma adaptação/tradução de um artigo postado no Solidox que aborda alguns métodos para tornar seu código mais seguro. O que acontece é que até hoje vejo inúmeras falhas que muitas vezes passam despercebidas para um leigo mas que, para alguém que conhece um mínimo de programação, facilmente poderia causar problemas para esses sitemas.

Aí eu pensei em colocar aqui para divulgar e que para os recém programadores PHP possam ler e levar consigo ao longo de sua jornada com essa fiel linguagem de programação.

O artigo saiu em diversos sites de certo prestígio na área como o PHPBrasil.com o PHPAvancado.net e o HTMLStaff.org. Vale a pena ler.

Segue abaixo, o texto na integra.

Leia o resto deste post »

Escrito por Murilo Adriano

Sábado 4 de Outubro de 2008 em 23:09

Publicado em Php, Programação, Segurança

Etiquetado com , ,

Vector? Deque? Stack? Map? List? Como escolher o container STL correto?

com 2 comentários

Esses dias atrás no canal #c++ da Freenode encontrei um diagrama que achei bem interessante ter guardado. Ele ajuda a escolher qual container da STL do C++ escolher quando a gente for fazer nossos programinhas ou projetões :) .

C++ STL Containers

C++ STL Containers

Escrito por Murilo Adriano

Quinta-feira 25 de Setembro de 2008 em 02:03

Maratona de Programação 2008, eu participei!

com 2 comentários

Participei das regionais da Maratona de Programação na sede de Goiás que foi na UFG. O desempen ho de minha equipe não foi tão bom quanto o esperado
Maratona

mas valeu pela experiência e pela participação.

A competição começou lá pelas 10h com o warm up (aquecimento) com dois probleminhas super fáceis onde minha equipe (UCG Caverna do Dragão) venceu.  Foram 9 problemas onde quem acertasse mais e tivesse menos penalização por tempo venceria. Participaram da maratona na sede de Goiás 3 instituições totalizando 7 times a UCG com 3, a UFG e UEG com 2 times cada.
Após o almoço, às 14h começou pra valer! O que começou num clima de descontração logo deu lugar à uma concentração…
Nem ví e 5 horas se passaram e ocorreu o término.
Travei em um problema fácil… Poderíamos ter saído melhor.
O resultado final, fotos e estatísticas podem ser visto em http://www.inf.ufg.br/maratona/#Resultado
Mais sobre a maratona pode ser visto no blog do meu colega Leonardo Nunes, que também participou: http://leonardonunes.wordpress.com/2008/09/21/xiii-maratona-de-programacao/
^^

Escrito por Murilo Adriano

Quinta-feira 25 de Setembro de 2008 em 01:58

Publicado em Cotidiano, Programação

Etiquetado com ,

Passatempo Geek

com um comentário

Sabe aquelas horas que não tem nada pra se fazer?

Se você gosta de programar assim como eu, você poderia estar “gastando” esse tempo participando de programming contests. Já não é de hoje que conheço o site de julgamento online SPOJ (Sphere Online Judge).

É muito simples usar o site. Após o cadastro é só clicar em problems, selecionar o tipo de problema, escolher um dos problemas e começar a programar!

De tempo em tempo são lançados alguns contests (desafios) em que os usuários disputam entre si.

E agora o melhor: existe uma versão brasileira do SPOJ, o SPOJ Brasil.

Os as respostas dos problemas podem ser submetidas em mais de 30 linguagens de programação diferentes!

Pra quem gosta é uma ótima! ;)

Escrito por Murilo Adriano

Terça-feira 15 de Abril de 2008 em 15:11

Publicado em Programação

Etiquetado com , ,