Murilo :P

C++, Computação, Programação, Web e afins :)

Posts Tagged ‘Programação

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

with 4 comments

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?

Written by Murilo Adriano

14 de January de 2009 at 21:57

Posted in Baixo nível, C/C++, Programação

Tagged with , ,

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

with one comment

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

Written by Murilo Adriano

25 de November de 2008 at 15:41

Posted in Programação

Tagged with ,

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

with 28 comments

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.

Read the rest of this entry »

Written by Murilo Adriano

14 de November de 2008 at 01:12

Posted in C/C++, Programação

Tagged with , , ,

Escrevendo um Código PHP Seguro

with 4 comments

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.

Read the rest of this entry »

Written by Murilo Adriano

4 de October de 2008 at 23:09

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

with 2 comments

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

Written by Murilo Adriano

25 de September de 2008 at 02:03

Maratona de Programação 2008, eu participei!

with 2 comments

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/
^^

Written by Murilo Adriano

25 de September de 2008 at 01:58

Passatempo Geek

with one comment

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! 😉

Written by Murilo Adriano

15 de April de 2008 at 15:11

Posted in Programação

Tagged with , ,