Tải bản đầy đủ (.pdf) (466 trang)

Addison wesley java performance and scalability volume 1 server side programming techniques jun 2000 ISBN 0201704293

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.59 MB, 466 trang )



TableofContents

Java™PerformanceandScalabilityVolume1:
Server-SideProgrammingTechniques
ByDovBulka

Publisher

:AddisonWesley

PubDate

:June05,2000

ISBN

:0-201-70429-3

Pages

:320

Thisbookwaswrittenwithonegoalinmind:toprovideJava
programmerswiththeexpertiseneededtobuildefficient,scalableJava
code.Theauthorshareshisexperienceinserver-sideperformance
tuningthroughmeasuredperformanceassessments,called
optimizations.Eachoptimizationdiscussestechniquestoimprovethe
performanceandscalabilityofyourcode.Everyclaimissubstantiated
withhardnumbersandanexperience-basedevaluation.Java(TM)


PerformanceandScalability,Volume1,providesinvaluableadvicethat
youwill,nodoubt,findusefulinyourcoding.
Presentedin48conciselessonsthattargetthemostcommonandcritical
performancepitfalls,thisbookoffersaplethoraofpracticaltipsand
solutionsforboostingtheperformanceofyourprograms.Theselessons
coverperformance-criticalareassuchasmemorymanagement,garbage
collection,caching,andmultithreading.


Specificlessonsinclude:


ReservingStringBuffercapacity


Avoidingprematureobjectcreation


Creatinganefficientvectorclass


DesigningcachingintoyourAPI


Thecostofsynchronization


Parallelsubtasks



JNIefficiency
VaryingtheserverworkloadandRMInetworkplumbing


UsingServletOutputStream
CachingJDBC(TM)connections
Inadditiontoprovidinghardnumbersthatquantifytheoptimizations,the
authorconcludesthebookwithanapplicationdemonstratingthe
effectivenessoftheperformanceoptimizations.Theexercisetakesa
typicalprogramandincreasesitsperformancefourfoldthroughaseries
ofstepsthattietogetherthelessonslearnedthroughoutthebook.He
offersboththemeansandtheprooftobettercoding.






TableofContents

Java™PerformanceandScalabilityVolume1:
Server-SideProgrammingTechniques
By
DovBulka

Publisher

:AddisonWesley

PubDate


:June05,2000

ISBN

:0-201-70429-3

Pages

:320

Copyright
ListofFigures
Chapter1
Chapter2
Chapter3
Chapter5
Chapter6
Chapter7
Chapter8
Chapter9
Chapter10
Chapter11
Preface
Introduction


JavaSpeed
TheTestEnvironment
BeforeYouOptimize:AWordofCaution

OrganizationofThisBook
Acknowledgments
Chapter1.
JavaStrings
Optimization1:StringConcatenation
Optimization2:FightObjectOverpopulation
Optimization3:StringEquality
Optimization4:CharacterstoBytesandBack
Optimization5:StringTokenizer
Optimization6:charAt()
Optimization7:PrefercharAt()tostartsWith()
Optimization8:ReserveStringBufferCapacity
KeyPoints
Chapter2.
PureOverhead
Optimization9:UselessComputations
Optimization10:Don'tTraceTrivialMethods
Optimization11:MakingOverheadVanish
Optimization12:PrematureObjectCreation
Optimization13:Don'tInitializeTwice
Optimization14:DoYouReallyNeedtoZero-OutaBuffer?
Optimization15:The80–20Principle
Optimization16:PurgeObsoleteCode
KeyPoints
Chapter3.

VectorsandHashtables
Optimization17:VectorAddandRemove
Optimization18:VectorCapacity
Optimization19:VectorEnumeration

Optimization20:EfficientVectorClass
Optimization21:UsingtheAPIWisely
Optimization22:HashtableParameters
Optimization23:SpeedUphashCode()
Optimization24:SpeedUpequals()
KeyPoints
Chapter4.
Caching
Optimization25:CacheFileContents
Optimization26:DesignCachingintoYourAPI


Optimization27:Precompute
Optimization28:RelaxGranularity
Optimization29:Inheritance
KeyPoints
Chapter5.
I/OStreams
ExampleI/OCode
Optimization30:OutputBuffering
Optimization31:Don'tFlushPrematurely
Optimization32:PreferByteStreamtoUnicode
Optimization33:InputBuffering
Optimization34:Byte-to-CharConversions
Optimization35:BinaryI/O
KeyPoints
Chapter6.
Recycling
Optimization36:ObjectRecycling
Optimization37:ObjectPools

Optimization38:LastIn,FirstOut
KeyPoints
Chapter7.
ScalabilityandMultithreading
ScalabilityBasics
TheSMPArchitecture
Amdahl'sLaw
MultithreadedandSynchronizationTerminology
TheCostofSynchronization
Optimization39:ParallelSubtasks
Optimization40:SynchronizationFalseSharing
Optimization41:LockFusion
Optimization42:CodeMotion
Optimization43:ShareNothing
Optimization44:PartialSharing
Optimization45:Read/WriteLocks
KeyPoints
Chapter8.
JNI
Optimization46:JNISurprise
Optimization47:JNItotheRescue
Optimization48:PreferSystem.arraycopy()
KeyPoints


Chapter9.
RMI
TheRMINetworkPlumbing
VaryingtheServerWorkload
RMIServeronRemoteMachine

SerializingHeavyweightObjects
KeyPoints
Chapter10.
Servlets
ServletsUsingPrintWriter
ServletsUsingServletOutputStream
PrecomputingMessageBytes
PumpingMoreData

PingServlet—APerformanceUpperBound
ExtendingPingServlet
SessionState

PingJdbc
CachingJDBCConnections
JSP—JavaServerPages
RMI
KeyPoints
Chapter11.
AJavaWebServer
Version1:TheOriginalServer
Version2
Version3
Version4
Version5
Version6
KeyPoint
AppendixA.
CachingJDBCConnections


CacheDriver.java
CacheConnection.java
CacheStatement.java
CacheCallableStatement.java
CachePreparedStatement.java
CacheDriver.properties
AppendixB.
SimpleJavaWebServer

Server.java


FileInfo.java
UrlCache.java
LazyDate.java
MyGetBytes.java
server.properties
Bibliography







Copyright
Manyofthedesignationsusedbymanufacturersandsellerstodistinguishtheirproductsareclaimedas
trademarks.Wherethosedesignationsappearinthisbookandwewereawareofatrademarkclaim,
thedesignationshavebeenprintedininitialcapitallettersorallcapitals.
Theauthorsandpublisherhavetakencareinthepreparationofthisbook,butmakenoexpressedor

impliedwarrantyofanykindandassumenoresponsibilityforerrorsoromissions.Noliabilityis
assumedforincidentalorconsequentialdamagesinconnectionwithorarisingoutoftheuseofthe
informationorprogramscontainedherein.
Copyright©2000byIBMCorporationAllrightsreserved.Nopartofthispublicationmaybereproduced,
storedinaretrievalsystem,ortransmitted,inanyformorbyanymeans,electronic,mechanical,
photocopying,recording,orotherwise,withoutthepriorconsentofthepublisher.PrintedintheUnited
StatesofAmerica.PublishedsimultaneouslyinCanada.
Thepublisheroffersdiscountsonthisbookwhenorderedinquantityforspecialsales.Formore
information,pleasecontact:PearsonEducationCorporateSalesDivisionOneLakeStreet
UpperSaddleRiver,NJ07458
(800)382-3419

VisitusontheWebatwww.awl.com/cseng/
LibraryofCongressCataloging-in-PublicationDataBulka,Dov.
Javaperformanceandscalability/DovBulka.
p.cm.
Includesbibliographicalreferencesandindex.
Contents:v.1.Server-sidetechniquesISBN0-201-70429-3
1.Java(Computerprogramlanguage)I.Title.
QA76.73.J38B842000
005.13'3—dc2100-025661
Textprintedonrecycledpaper.
12345678910-ML-0403020100
Firstprinting,May2000

Dedication
Tomysisters,MiriAmirandDvoraSarig,mybrother,ZeevBulka,andlastbutnotleast,mywife,
CynthiaPowersBulka.









ListofFigures
Chapter1
Chapter2
Chapter3
Chapter5
Chapter6
Chapter7
Chapter8
Chapter9
Chapter10
Chapter11





Chapter1
Figure1.1ComparingStringandStringBufferappendsFigure1.2CompareString
toStringBufferperformanceFigure1.3Overabundanceofobjectstakesatollon
performanceFigure1.4YoucoulddoworsethanString+
Figure1.5toUpperCase()createsanewStringobjectFigure1.6Performanceof
StringequalitytestsFigure1.7ThevariousflavorsofStringequalityFigure1.8Comparing
String.getBytes()toahomegrownoneFigure1.9Thefastbyte-to-charconverterhas
beendeprecatedFigure1.10AStringTokenizercomparedtoahomegrownoneFigure

1.11Homegrowntokenizingisfaster
Figure1.12AfastercharAt()
Figure1.13ArraycopyplusdirectindexingoutperformedcharAt()
Figure1.14FasteralternativesforstartsWith()





Chapter2
Figure2.1Tracingimpactonperformance
Figure2.2Theimpactofdoubleinitialization





Chapter3
Figure3.1VectorinsertionFigure3.2Performanceandcapacity
Figure3.3PerformanceofVectoriterationsFigure3.4PvectorisfasterthanVector
Figure3.5TwowaystopopanelementFigure3.6Thecostofobjectcreationcompeteswith
hashCode()gainsFigure3.7RecyclingtheStringWrapperprovidesaperformance
boostFigure3.8ThecostofString.toUppercase()wasoverwhelming





Chapter5
Figure5.1Thebufferingimpact

Figure5.2Periodicflush()callswillhurtFigure5.3TheautoFlushfeatureisakiller
Figure5.4AnoutputstreamisfasterthanawriterFigure5.5Inputbufferingishighly
recommendedFigure5.6AnInputStreamisfasterthanaReader
Figure5.7ThecostofTrade.toString()
Figure5.8TransformationstoandfromUnicodeareexpensiveFigure5.9Deserializingisfaster
thanUnicodetransformations





Chapter6
Figure6.1RecyclingaVectorwasfasterthancreatinganewone
Figure6.2Poolingisunderstandablyslowerthanrecycling




×