Cross browser compatibility
If your application is for mobile then you will need the different size of the library. The library is needed in a different size because the browsing speed in the smartphone is different and the smartphone has the lower processing. For the smartphone, you can use a library with lower footprint. You should not bother for cross-device compatibility because your application will run on one device and that may be your desktop or on your mobile.
Input data format
Before customizing your application you should ensure whether the charting library is flexible enough so that you can do what you like, or will it just work well on defaults? There are so many things that you can play around like configuring legends, adding custom shapes, attaching event handles such as hover, click, key press etc, managing chart lifecycle, leveraging drill down of data, and applying themes. Thus, if you like to create the beautiful design, it would be better that you have the library which is easily customizable and you can give shape it according to the design of the application. It is also true that with great customizability you will have great complexities. You can take D3.js for example because it allows the elements to configure on the chart but doing so its effort becomes intensive. You have FusionCharts library and Highcharts library which makes a perfect balance between these two. You can get a lot of freedom for customizing the chart which requires minimum effort on your side.
Range of available charts
In this application, you can create any visualization but it should be the part of the library. There are different types of charting libraries which have collective packages in which different charts are grouped like, widgets, stock charts, and maps. Depending on the use-case you can select a package or you can select the complete bundle. You should always think for your future needs and select the package in which you will get the chart and that chart you may require in future so you should keep this in your mind.
D3.js data visualization has a steep learning curve which is very powerful. If you are using the charting library for the first time or you are running on the deadline then it will be hard to use it. If you have enough time for experimentation and you have just started DataViz you can try libraries then you can get the result in a satisfactory way but sometimes it needs some investment. If you want to depend completely on the application that you have built or you want a small part for application of charting or visualizing, or you just need simple charts, then you can go for libraries that will be easy to use and will give support to various chart types out of the box like FusionCharts or Chart.js.
The performance is dependent on various factors like the size of the library, rendering, and re-rendering, memory usage, a number of browser repaint cycle, garbage collection etc. Suppose you have built a dashboard which is used in local internet, in that case, using a library will be meaningless as the smallest package size makes no sense here. You can choose the library that is based on other factors will be suitable for you.