Fastest way to access data between String and char[]

Hi all,
I've been programming a small String generator and was curious about the best and fastest way to do so.
I've done it in two ways and now hope you can tell me if there is a "more java version" or fastest way between those two or if I'm totally wrong as some classe in the API already does that.
Here are the codes:
version 1:
        //describe the alphabet
     String alphabet = "abcdefghijklmnopqrstuvwxyz";
     //The "modifiable String"
     StringBuffer stringBuffer = new StringBuffer();
     //Just put the temporary int declaration outside the loop for performance reasons
     int generatedNumber;
     //Just do a "for" loop to get one letter and add it the String
     //Let's say we need a 8 letters word to be generated
     for (int i=0; i < 8; i++)
         generatedNumber = (int)(Math.random() * 26);
         stringBuffer.append(alphabet.charAt(generatedNumber));
     System.out.println(stringBuffer.toString());
     stringBuffer =null;version 2:
        //describe the alphabet
     char[] alphabetArray = {'a', 'b', 'c', 'd', 'e', 'f',
                    'g', 'h', 'i', 'j', 'k', 'l',
                    'm', 'n', 'o', 'p', 'q', 'r',
                    's', 't', 'u', 'v', 'w', 'x',
                    'y', 'z'}
     //The "modifiable String"
     StringBuffer stringBuffer = new StringBuffer();
     //Just put the temporary int declaration outside the loop for performance reasons
     int generatedNumber;
     //Just do a "for" loop to get one letter and add it the String
     //Let's say we need a 8 letters word to be generated
     for (int i=0; i < 8; i++)
         generatedNumber = (int)(Math.random() * 26);
         stringBuffer.append(alphabetArray[generatedNumber]);
     System.out.println(stringBuffer.toString());
     stringBuffer =null;Basically, the question is, what is the safest, fastest and more "to the rules" way to access a char in a sequence?
Thanks in advance.
Edited by: airchtit on Jan 22, 2008 6:02 AM

paul.miner wrote:
Better, use a char[] instead of a StringBuffer/StringBuilder, since you seem to know the size of the array in advance.
Although I imagine making "alphabet" a char[] has slightly less overhead than making it a String
1. It's a lot clearer to write it as a String.
2. You can just call toCharArray() on the String to get a char[], instead of writing out each char individually.
3. Or if you're going to be using a plain alphabet, just use (randomNumber + 'a')
And use Random.nextInt()Hello and thx for the answers,
I know I shouldn't put constants in my code, it was just a piece of code done in 1 minute to help a colleague.
Even if it was just a one minute piece of code, I was wondering about the performance problem on large scale calculating, I mean something like a 25 characters word for billions of customers but anyway, once again, the impact should be minimal.
By the way, I didn't know the Random Class (shame on me, I still don't know the whole API) and, I don't understand why I should be using this one more than the Random.Math which is static and thus take a few less memory and is easier to call.
Is it because of the repartition factor?
According to the API, the Random.Math gives (almost) a uniform distribution whether the Random.nextInt() gives a "more random" int.
I

Similar Messages

  • What is the fastest way to pass data between parallel threads?

    I have a top level vi running with 6 parallel threads. I need to pass some data from digital I/O to several of the threads. What is the fastest responding way to do this. I am controlling a machine that has quite a few sensed events happening at very close intervals, some as close together as 1 to 2 milliseconds, and I seem to be randomly missing the signal from these sensors. How can I distribute the I/O to the different threads and not miss any inputs?

    I usually use a Queue to pass data from one loop to another. Other
    choices are Functional Globals or Notifiers. It kind of depends on what
    you need to do as to which one is best, so it's a bit hard to recommend
    one over the others without knowing more about your application.
    Both Queues and the Functional Globals (if written correctly) can
    buffer data so you're less likely to lose data if one loop gets behind
    the others.
    Ed
    Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
    Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.

  • Best way to transfer data between iMac early 2006 and iMac late 2012

    What is the best way to transfer data between iMac early 2006 and iMac late 2012?

    HI, is this for Migrating all data ove, or just File Sharing?
    What OSX version is in he older one?
    Do you have any backup external drive for the older one?

  • Fastest way to transfert data from cRIO

    Is anybody know the fastest way to transfert data from cRIO? I tested shared variable, but it's not fast enough. What is the fastest speed could we achieve with shared variable in cRIO? how can I transfert 50000 32 bit word per second from cRIO to my PC? This should run 24h/day.
    Thanks
    B.
    Benoit Séguin
    Software Designer

    Hi Benoit,
    Thanks for your post and I hope your well. I noticed you've not received a reply - and I would like offer my advice.
    Shared variables are one way to communicate over the Ethernet. You can use UDP, TCP and VI Server also. 
    UDP is the fastest network protocol but it includes little error handling and can lose data. TCP is commonly used for large systems. TCP takes more programming effort than shared variables, however, it provides a good mix of speed and reliability. You can use the VI server to run Vis and/or access and set the value of controls and indictors, but it is slower and not recommended for larger data sets. 
    Please let me know what you think,
    Kind Regards,
    James.
    Kind Regards
    James Hillman
    Applications Engineer 2008 to 2009 National Instruments UK & Ireland
    Loughborough University UK - 2006 to 2011
    Remember Kudos those who help!

  • Events limit can only be dates between 1 and 9 on the day field

    Im an student, and im trying to put my timetable into ical as did last year
    it goes ok, i set it up to repit every week mondays lessons for example
    but when i am trying to set up a limit for this event to repit itself ical only allows me to
    put a date between 1 and 9 on the day field.
    Does anyone know why is that?
    sorry is my english is not so good im from spain and i might not explained very well
    thank you

    The x86 architecture has a standard formatting for disks that uses up to four primary partitions on a disk. On DOS or UNIX, you can view the partitions with 'fdisk'.
    This is layer that Windows and Linux tends to use for filesystems.
    Solaris though uses only one of those partitions for its own use (marking it a Solaris partition) and places a label similar to that on a SPARC disk (VTOC). So within the single x86 partition are several further subdivisions (slices).
    On solaris, the disk might be /dev/dsk/c0t0d0. You could access one of the Solaris (VTOC) slices as /dev/dsk/c0t0d0s0. As far as I know, Linux does not understand how to address the Solaris VTOC slices (If this isn't true, I'd love to know what the syntax for doing so is).
    You'd access the (non-Solaris) x86 parititions like /dev/dsk/c0t0d0p1 or so. While Linux can address extended x86 partitions, Solaris can only address primary partitions.
    Darren

  • Different ways to copy data between two schemas in one instance

    Hi there,
    I am searching a good way to copy data between two schemas in the same instance.
    Both schemas have an identical structure such as triggers, tables, views and so on. The only difference is the purpose: one is the productivity system and one is for development.
    I looked at datapump but I do not explicit want to export / import. I want to keep the data in the productivity schema as well as copy it to the other schema. Any ideas? I found out there is a copy statement but I dont't know how that works.
    Thank you so far,
    Jörn

    Thank you for your replies!
    I also thought of creating a second instance for development and move the dev - schema to it. I just don't know whether our server can handle both (performance?). Anyway the idea is to have a possibility to quickly rebuild the data inside a schema without indixes or triggers, just pure data. I thought the easiest way would be to copy the data between the schemas as they are exactly the same. However if you tell me DataPunp is the best solution i won't deny using it :).
    When you export data a file is created. does that also mean that the exported data is deleted inside the schema?
    best regards
    Jörn
    Ps: Guido, you are following me, aren' t you? ;-)

  • Different ways to establish SSO between Portal and ADP

    Hi,
    We are implementing payroll with the help of ADP.
    Please let me know different ways of establishing SSO between portal  and ADP
    Thanks
    Bala Duvvuri

    You may a few issues. SSO with logon tickets is based on accessing web sites in the same domain. So, if the portal is on http://ourportal.company.com, then the web site being accessed needs to have a URL like http://adphosted.company.com. Is the ADP system accessible by a DNS alias that is within company.com? If so, you're OK. If not, then there will be problems.
    The other SSO method is user mapping, but the security implications are not good...

  • Best way to transfer data between loops?

    Hi, whats the best way to transfer data between loops(state machines, regular while loop etc) in labview. For so many years ive been using local variables but these can cause race conditions. Anyone advise?
    Stu

    It depends one the structure of the loops and how they need to exchange data (unidirectional, bidirectional, broadcasting).
    The simple case of one loop passing data to the other loop: producer/consumer design pattern using a queue
    If the structure already contains an event structure: User Events
    The way I code is documented in my community nugget on events
    I often mix this with producer/consumer.
    Felix
    www.aescusoft.de
    My latest community nugget on producer/consumer design
    My current blog: A journey through uml

  • How to pass series of dates (between startdate and enddate) to subreport, which takes only one date as parameter

    Relatively new to Microsoft report services. I have created a report which takes a single parameter named 'SelectedDate'. This report runs fine (uses complex query of hours of the selected date and complex joins & aggregate calculations between SQL
    database tables). I created a new report with two parameters, namely, StartDate and EndDate. Also created a sql stored procedure which gives all dates between StartDate and EndDate. Added subreport to this report which calls my first report and defined 'SelectedDate'
    parameter to get the value as "=First(Fields!dt.Value, "DataSet1") - where dt is the resultset of procedure called in DataSet1. When I run this report, in the subreport, all I see is the report for 'StartDate' which is the passed
    value of the first parameter. I can't find a way to pass entire array of dates as parameter, to which user can browse forwards and backwards. Any idea? Thanks in advance for your help!

    HI Visakh16..Never mind my comment..I tried it again. This time I went to the completion of previewing..and noticed that the table with DataSet1 does display dates and first report underneath but once I click any other date, it displays the subreport on
    full page and navigation back arrow (with hint 'back to Parent Report) solution is not bad..so unless you a way to achieve my desired layout mentioned above - I am good for now! Thanks for your pointer in right direction!
    One small observation for thread readers: When I published the report to the report server, the back button (back to Parent Report) which was available to me at design time, is not displayed at client's browser. Upon checking pertinent threads, concluded
    that this is known issue for years and recommendation I concluded from various threads is: Use back button of browser and it should (& did) keep the parent report page, with table with selected dates intact. A few have noticed different behaviour
    for older browser versions. 

  • Difference between String and final String

    Hi friends,
    This is Ramana. Can u suggest me in this Question
    What is the difference between String and final String? Means
    String str="hai";
    final String str="hai";
    Regards,
    Ramana.

    *******REPEAT POST***********
    We already answered your question why post in a different section?
    http://forum.java.sun.com/thread.jspa?threadID=5201549

  • Best way to transfer video between iphone and mac wirelessly?

    Please suggest me the best way to transfer files between mac and iphone wirelessly.Mainly for videos.

    If you want to transfer photos and videos from the Mac to the iPhone (but not in the other direction) you can use iTunes and sync via wi-fi: http://support.apple.com/kb/HT1386
    If you want to wirelessly tranfer videos in the other direction you may want to look into a 3rd party app such as http://www.photosync-app.com Note that I have not used that app so be sure to investigate others as well.

  • Does anyone know if there is a way to share files between Mavericks and Mac OS 9.1 operating system?

    Does anyone know if there is a way to share files between Mavericks and Mac OS 9.1 operating system? When I try to connect from my iMac I get a window that says "The version of the server you are trying to connect to is not supported." Is there a work-around to this problem or is it just not possible? It would be largly appriciated for a solutin beings my business is a small town newspaper, and we have some important files on the older computer that need to be acessed daily.

    Actually to share files between OS 8-9 and OS X, all versions, is quite easy from what I read. Look here for some details.
    http://reviews.cnet.com/8301-13727_7-20003464-263.html
    And here.
    https://www.google.com/search?q=file+sharing+Mac+OS+9.x&oq=file+sharing+Mac+OS+9 .x&aqs=chrome..69i57.20706j0j1&sourceid=chrome&ie=UTF-8
    Or since both OS 9 and OS X can do SMB Windows sharing you could use that protocol to share files from one to the other.
    Doesn't really matter what OS you are using. Mac OS/OS X shar files with Windows computers of all types and versions of Windows so the same applies for the different versions of Mac OS/OS X.
    Each Operating System takes care of reading and writing files to there respective file formats of the hard drives so that does not have to be the same. They both just have to be able to do Ethernet with the same files sharing protocol.

  • How to sinck data between  production and R12 instance

    Hi,
    I am working on Oracle Apps up-gradation project.
    Now I have upgrade 11.5.7 to R12 (12.0.4) successfully. I started up-gradation task with 1 May of production data (backup) on new machine.
    Client wants to live R12 from 1/August/2009.
    Please suggest how to sinck data between production and R12 instance.
    Thanks
    Anup

    Hi,
    It is not possible to do what you propose (sync data from an 11.5.7 system to a 12.0.4 system). You will need to re-run the upgrade against the August 1 data, following your original upgrade procedures.
    Regards,
    John P.
    http://only4left.jpiwowar.com

  • Is there a way to access a voice message and to convert it to mp3 format directly ?

    Is there a way to access a voice message and convert it to mp3 format directly ?

    Not directly on the phone, no. You'll need third-party software, like this to extract it from your phone:
    http://www.wideanglesoftware.com/touchcopy/index.php

  • What Are the Differences Between String and StringBuffer?

    Both String and StringBuffer are final classes. StringBuffer grows in size dynamically. Could people help to detail other differences between String and StringBuffer?

    String is immutable. In other words, once it is made, the contents of that instance of String cannot be changed (easily). The size and characters cannot be changed, and code can take advantage of this fact to optimize space. Also, once you have a reference to a string, you do not need to worry about it changing at all, so you can eliminate constant tests to verify things such as size in another class that may want to hold onto the string.
    StringBuffer, as you noticed, can change dynamically. While this provides flexibility, it cannot be optimized and assumptions cannot be made as with strings. If a class holds a reference to a StringBuffer that it does not own, there is a possibility that it may change things such as size when the class tries to use it later. StringBuffer is also less efficient in handling space then an equivalent String. The character array to hold a String is exactly the length to hold all the characters. StringBuffer, on the other hand, adds a 16 character buffer of array space for possible expansions. Also, the size of the internal array doubles when its internal capacity is exceeded. So, unless you explicitly maintain the size, a StringBuffer will take up more memory then an equivalent String, and if your program needs thousands of instances of Strings (which is not uncommon), that space can add up.
    I hope this helps clarify some things for you.
    -JBoeing

Maybe you are looking for