1) Functional requirement is specified by User, while non-functional requirement is specified by technical peoples e.g. Architect, Technical leaders and software developers.
2) Functional requirement is also the activity System must perform, on other hand non-functional are depending upon criticality of application. For example, if your application is not critical and you can live with downtime, you may not need to develop complex failover and disaster recovery code, reducing your application total development time.
3) Functional requirements defines a software’s functionality i.e. what can they do, while non-functional requirements defines, other things which is not required by user but requirement by service provider or software itself e.g. logging is a non-functional requirement to support an application, not directly used by user but essential to troubleshoot any issue in production environment.
4) Non-functional requirements are sometimes defined in terms of metrics (something that can be measured about the system) to make them more tangible.
5) Non-functional requirements may also describe aspects of the system that don't relate to its execution, but rather to its evolution over time (e.g. maintainability, extensibility, documentation, etc.).
Read more: http://javarevisited.blogspot.com/2015/01/difference-between-functional-and-nonfunctional-requirements-software-development.html#ixzz4M1wnWBhz