| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2010 16:18:10
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Boa tarde, Encontrei algo interessante no guj em um tópico antigo sobre ponteiros. Uma classe para gerência de memória nativa, ou seja, possibilita java usar ponteiros, fazer aritmética dos mesmos, alocar e desalocar memória sem interferência do garbage colector. Esse tópico me deu a idéia de gerar um benchmark entre System.arrayCopy, e uma classe que implementei, que utiliza esses recursos citados acima, em um método chamado copy memory. Existe uma boa diferença de performance entre elas, e, pode ser muito útil utilizar a classe Unsafe em partes criticas de um sistema, afim de ganhar performance. O teste pode ser expandido, para maior objetividade e certeza.
| Nome do arquivo |
usafeestudo.zip |
Download
|
| Descrição |
source |
| Tamanho |
1 Kbytes
|
| Baixado: |
69 vez(es) |
|
| Nome do arquivo |
bench.jpg |
Download
|
| Descrição |
screenshot |
| Tamanho |
197 Kbytes
|
| Baixado: |
78 vez(es) |
This message was edited 1 time. Last update was at 05/02/2010 16:18:47
|
www.citrox.com.br |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/02/2010 17:36:30
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
Cara... isso é coisa do demo!!! hahahahahhahah
[]´s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 16:56:26
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
asaudate wrote:Cara... isso é coisa do demo!!! hahahahahhahah []´s
??? lidar com apontadores? Imagino que a sun criou essa classe para utilizar em algoritmos de processamentos que exigem performance. Aka decodificar formatos de audio e vídeo, e/ou imagens.....
This message was edited 3 times. Last update was at 06/02/2010 17:03:15
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 21:24:25
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
juliocbq wrote:
asaudate wrote:Cara... isso é coisa do demo!!! hahahahahhahah
[]´s
???
lidar com apontadores? Imagino que a sun criou essa classe para utilizar em algoritmos de processamentos que exigem performance.
Aka decodificar formatos de audio e vídeo, e/ou imagens.....
Olha... gosto de seguir a teoria de que, normalmente, a explicação mais simples para algum problema geralmente é a correta. Neste caso, acho que a explicação mais simples é... eles criaram isso porque eles são felizes, porque eles estavam entediados, enfim... =P
[]´s
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/02/2010 23:11:01
|
Dieval Guizelini
Virtual Machine Man
![[Avatar]](/images/avatar/9fc92b9c69b711dcb880ccb743fc6f06.jpg)
Membro desde: 05/07/2006 14:39:44
Mensagens: 570
Localização: Curitiba - PR
Offline
|
Eu tomaria muito cuidado com os testes de garagem e algoritmos "alternativos"...
Existe uma razão para a API ser mais lenta na cópia do Array, entre elas:
- controle dos limites
- thread-safe
- gerenciamento de memória (rsrs)
E um exemplo de algo parecido na SUN:
http://java.sun.com/docs/books/performance/1st_edition/html/JPNativeCode.fm.html
fw
|
Sun Certified Java Programmer 5.0 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2010 19:50:10
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
Mas isso é obvio, o que tornaria essa mesma inviável em aplicações que exigem performance, como como captura de vídeo. Como contornar esse problema, se você não possui opção(JMF é horrível para aplicações robustas e dsj não é opensource, nem free)? O que quero dizer?
Quero dizer que a classe Unsafe torna possível contornar alguns inconvenientes do coletor de lixo
EX:
Uma aplicação que precisa capturar vídeo de uma placa e exibí-lo de alguma forma. A parte crítica de uma aplicação como essa está justamente na hora de copiar os bytes de uma área da memória cedida pela placa de captura, para a sua imagem, e depois pinta-la em um contexto gráfico, como graphics 2d. Eis o frame rate.
Com o coletor de lixo trabalhando descontroladamente(não se tem controle do GC), esse tipo de aplicação congela a todo instante, na plataforma java.
Outro uso para isso seria resolver o problema do cacheiro viajante em tempo hábil. Imagina se um sistema de navegação automática, de um avião, tivesse que congelar alguns segundos, por causa do coletor de lixo, ou porque System.arrayCopy perde tempo em checar n coisas desnecessárias, para deixar sua execução "segura"(segura entre aspas. Se sabe muito bem que uma exceção como IndexOutOfBound danifica toda área do programa, na máquina virtual) ?
O vini godoy e eu vinhamos conversando sobre isso já a algum tempo, e sobre poder usar esse tipo de artifício, quando necessário, como em c#. Essa classe torna isso possível.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2010 19:51:17
|
juliocbq
GUJ Expert
![[Avatar]](/images/avatar/153704bb24a28e9a6bb49e8ffde1492e.jpg)
Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Offline
|
asaudate wrote:
juliocbq wrote:
asaudate wrote:Cara... isso é coisa do demo!!! hahahahahhahah
[]´s
???
lidar com apontadores? Imagino que a sun criou essa classe para utilizar em algoritmos de processamentos que exigem performance.
Aka decodificar formatos de audio e vídeo, e/ou imagens.....
Olha... gosto de seguir a teoria de que, normalmente, a explicação mais simples para algum problema geralmente é a correta. Neste caso, acho que a explicação mais simples é... eles criaram isso porque eles são felizes, porque eles estavam entediados, enfim... =P
[]´s
Acredito que o centro de pesquisa da sun não tem esse perfil.
|
www.citrox.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 09:40:20
|
asaudate
GUJ Master
![[Avatar]](/images/avatar/974e2945a18e0bfb8e3aa8becac3e65c.jpg)
Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline
|
juliocbq wrote:
asaudate wrote:
juliocbq wrote:
asaudate wrote:Cara... isso é coisa do demo!!! hahahahahhahah
[]´s
???
lidar com apontadores? Imagino que a sun criou essa classe para utilizar em algoritmos de processamentos que exigem performance.
Aka decodificar formatos de audio e vídeo, e/ou imagens.....
Olha... gosto de seguir a teoria de que, normalmente, a explicação mais simples para algum problema geralmente é a correta. Neste caso, acho que a explicação mais simples é... eles criaram isso porque eles são felizes, porque eles estavam entediados, enfim... =P
[]´s
Acredito que o centro de pesquisa da sun não tem esse perfil.
Ô pessoa mais sem senso de humor, viu...
|
Alexandre Saudate
__________________________
Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.
Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate
Evite usar Axis2!!! Leia aqui para mais detalhes!
@alesaudate
Quer ler um blog especializado em web services e SOA?
 |
|
|
 |
|
|